我不确定如何做到这一点。一种方法是:
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标头。答案 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
这不容易。