web-dev-qa-db-fra.com

télécharger un fichier Excel à partir du Web en python

J'ai l'adresse web suivante:

dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"

J'ai essayé de télécharger le fichier:

urllib2.urlopen(dls, "test.xls")

Cela a créé un fichier appelé "test.xls", mais il s’agit clairement d’un fichier HTML. Si j'ai ouvert le fichier html dans firefox, il a ouvert un fichier Excel, mais si j'ai ouvert le fichier dans Excel, ce n'était certainement pas le fichier Excel que je cherchais.

Si j'ai une adresse Web similaire à celle ci-dessus, comment faire pour que Python télécharge le fichier Excel en tant que fichier Excel?

7
zelinka

Cela enregistrerait le fichier Excel dans le même dossier à partir duquel le script a été exécuté.

import urllib
dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"
urllib.urlretrieve(dls, "test.xls")
4
mnjeremiah

Je suggère d'utiliser demandes :

import requests
dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"
resp = requests.get(dls)

output = open('test.xls', 'wb')
output.write(resp.content)
output.close()

Pour que les demandes soient installées:

pip install requests
12
Fedalto

Pour ajouter à la suggestion de requêtes de Fedalto (+1), mais rendez-la plus pythonique avec un gestionnaire de contexte:

import requests
dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"
resp = requests.get(dls)
with open('test.xls', 'wb') as output:
    output.write(resp.content)
6
Aaron Hall

Deux problèmes, l'un avec le code (ci-dessous), l'autre que l'URL est incorrecte. Un navigateur Web (moderne) corrigera automatiquement " http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls" en " http://www.muellerindustries.com/uploads/pdf /UW%20SPD0114.xls "mais pas Python.

Ce code fonctionne pour moi sur Python 3.x

import urllib
outfilename = "test.xls"
url_of_file = "http://www.muellerindustries.com/uploads/pdf/UW%20SPD0114.xls"
urllib.request.urlretrieve(url_of_file, outfilename) 

Ce qui me donne le fichier.

2
BKay