Python: Downloading a large file to a local path and setting custom http headers
我想从一个HTTP URL下载一个文件到一个本地文件。文件足够大,我想下载并保存它的块,而不是将整个文件作为一个巨大的字符串保存在
如果我使用
构建一个类似于
使用urllib2编写自己的函数有什么坏处?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | import os import sys import urllib2 def urlretrieve(urlfile, fpath): chunk = 4096 f = open(fpath,"w") while 1: data = urlfile.read(chunk) if not data: print"done." break f.write(data) print"Read %s bytes"%len(data) |
并使用请求对象设置头
1 2 3 | request = urllib2.Request("http://www.google.com") request.add_header('User-agent', 'Chrome XXX') urlretrieve(urllib2.urlopen(request),"/tmp/del.html") |
如果您想使用urllib和urlretrieve,那么子类
要安装供urllib使用的urlopener,请参阅文档的urllib.u urlopener部分中的示例(注意下划线):
1 2 3 4 5 6 | import urllib class MyURLopener(urllib.URLopener): pass # your override here, perhaps to __init__ urllib._urlopener = MyURLopener |
然而,你会很高兴听到你对问题评论的评论,从