用Python从网页下载Excel文件
我有一个这样的网页地址:
dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"
我尝试下载这个文件:
urllib2.urlopen(dls, "test.xls")
这导致生成了一个叫“test.xls”的文件,但这显然是一个html文件。如果我在Firefox浏览器中打开这个html文件,它会打开一个Excel文件,但如果我在Excel中打开这个文件,它绝对不是我想要的Excel文件。
如果我有像上面这样的网页地址,我该如何让Python下载这个Excel文件,并确保它是一个真正的Excel文件呢?
4 个回答
5
这里有两个问题,一个是代码的问题(见下文),另一个是网址不对。现代的网页浏览器会自动把 "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls" 这个链接修正为 "http://www.muellerindustries.com/uploads/pdf/UW%20SPD0114.xls",但是Python不会这样做。
这段代码在我的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)
这样我就能获取到文件了。
20
为了补充Fedalto的建议(+1),我们可以用上下文管理器让它更符合Python的风格:
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)
42
我建议使用requests这个库:
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()
要安装requests库,可以按照以下步骤:
pip install requests
12
这段话的意思是,运行这个脚本后,Excel文件会保存在和脚本一样的文件夹里。
import urllib
dls = "http://www.muellerindustries.com/uploads/pdf/UW SPD0114.xls"
urllib.request.urlretrieve(dls, "test.xls") # For Python 3
# urllib.urlretrieve(dls, "test.xls") # For Python 2