我不确定如何做到这一点。 一种方法是:
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用户代理标题。
我正在开始作为评论,到一个答案…
你的第二个例子几乎做了它所需要的,用一个自定义标题创建一个请求对象,然后将结果读入本地文件。
urlretrieve
是一个更高级别的功能,所以它只能完成文档所说的内容:将网络资源下载到本地文件,并告诉您文件在哪里。 如果你不喜欢你的第二个例子稍微低一点的方法,你想要更高级的功能,你可以看看使用请求库
正如@jdi所说,你可以使用请求库。 这也在https://docs.python.org/2/library/urllib2.html中提及。 你需要点图书馆,例如
pip install requests
我的代码如下所示:
import requests def download_file(url): file = requests.get(url) return file.text
这不容易。