用Python从网上下载Excel文件

21

我有以下网址:

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文件?


可能是重复的问题: 如何使用urllib2在Python中下载zip文件? - zgyarmati
4个回答

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

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)

11

这将把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

6
我使用了你的代码,但是出现了错误。通过改为urllib.request.urlretrieve(dls, "test.xls"),我解决了这个问题。 - Mohammad Nazari

5

有两个问题,一个是代码(如下),另一个是URL链接错误。现代的web浏览器会自动纠正"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) 

这让我得到了文件。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接