我正在用Python编写软件,以从数据库下载HTTP PDF。有时下载停止并显示以下消息:
retrieval incomplete: got only 3617232 out of 10689634 bytes
如何使用206 Partial ContentHTTP功能要求下载重新开始?
206 Partial Content
我可以使用wget -c它并且效果很好,但是我想直接在我的Python软件中实现它。
wget -c
任何想法 ?
谢谢
您可以通过发送带有Range标头的GET请求部分下载:
Range
import urllib2 req = urllib2.Request('http://www.python.org/') # # Here we request that bytes 18000--19000 be downloaded. # The range is inclusive, and starts at 0. # req.headers['Range'] = 'bytes=%s-%s' % (18000, 19000) f = urllib2.urlopen(req) # This shows you the *actual* bytes that have been downloaded. range=f.headers.get('Content-Range') print(range) # bytes 18000-18030/18031 print(repr(f.read())) # ' </div>\n</body>\n</html>\n\n\n\n\n\n\n'
请小心检查,Content-Range以了解实际下载了哪些字节,因为您的范围可能超出范围,并且/或者并非所有服务器似乎都遵守Range标头。
Content-Range