使用Python中带有wget-c特性的urllib下载文件

使用Python中带有wget-c特性的urllib下载文件,python,http,download,urllib2,urllib,Python,Http,Download,Urllib2,Urllib,我正在用Python编写一个软件,从数据库下载HTTPPDF。 有时下载停止时会显示以下消息: retrieval incomplete: got only 3617232 out of 10689634 bytes 我如何要求下载在停止使用206部分内容HTTP功能的地方重新启动 我可以使用wget-c来实现它,它工作得很好,但是我想直接在我的Python软件中实现它 有什么想法吗 谢谢您可以通过发送带有范围标题的GET请求部分下载: import urllib2 req = urllib2

我正在用Python编写一个软件,从数据库下载HTTPPDF。 有时下载停止时会显示以下消息:

retrieval incomplete: got only 3617232 out of 10689634 bytes
我如何要求下载在停止使用
206部分内容
HTTP功能的地方重新启动

我可以使用
wget-c
来实现它,它工作得很好,但是我想直接在我的Python软件中实现它

有什么想法吗


谢谢

您可以通过发送带有
范围
标题的GET请求部分下载:

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'
导入urllib2
req=urllib2。请求('http://www.python.org/')
#
#这里我们请求下载18000-19000字节。
#该范围是包含的,从0开始。
#
请求标头['Range']=“字节=%s-%s%”(1800019000)
f=urllib2.urlopen(请求)
#这将显示已下载的*实际*字节。
range=f.headers.get('Content-range')
打印(范围)
#字节18000-18030/18031
打印(repr(f.read())
#“\n\n\n\n\n\n\n\n\n\n”
请仔细检查
内容范围
,了解实际下载的字节数,因为您的范围可能超出范围,并且/或者并非所有服务器都遵守
范围
标题