Python下载文件

时间:2012-03-27 23:12:17

标签: python linux urllib2

我不确定如何做到这一点。一种方法是:

import urllib.request;
urllib.request.urlretrieve('www.example.com/file.tar', 'file.tar')

另一种方式是:

import urllib.request;

#Set as appropriate
userAgent = ....;

req = urllib.request.Request('www.example.com/file.tar', headers={'User-Agent' : userAgent});
response = urllib.request.urlopen(req);

#Save the file
f = open('file.tar', 'wb');
f.write(response.read());
f.close()

我不确定使用哪种方法。我将在循环中下载许多文件(带有模式文件名)。但是,我希望能够设置用户代理标头。这不重要,但我想。

编辑:我忘了提到我更喜欢第一种方法,但我不知道如何使用urlretrieve设置user-agent标头。

2 个答案:

答案 0 :(得分:2)

我正在将最初的评论转移到答案......

您的第二个示例几乎正在做它需要的东西,在使用自定义标头创建请求对象,然后将结果读入本地文件。

urlretrieve是一个更高级别的功能,因此它只执行文档所说的内容:将网络资源下载到本地文件并告诉您文件的位置。如果您不喜欢第二个示例的稍低级别方法,并且您想要更高级别的功能,则可以考虑使用Requests

答案 1 :(得分:0)

正如@jdi所说,你可以使用requests库。 https://docs.python.org/2/library/urllib2.html也提到了这一点。您需要点击库,例如

pip install requests

我的代码如下所示:

import requests

def download_file(url):
    file = requests.get(url)
    return file.text

这不容易。