문제

데이터베이스에서 HTTP PDF를 다운로드하기 위해 Python의 소프트웨어를 프로그래밍하고 있습니다. 때로는 다운로드 가이 메시지로 중지됩니다.

retrieval incomplete: got only 3617232 out of 10689634 bytes

다운로드에서 사용 중지를 중지하는 위치를 다시 시작하도록 요청하는 방법 206 Partial Content HTTP 기능?

나는 그것을 사용할 수 있습니다 wget -c 그리고 그것은 꽤 잘 작동하지만 파이썬 소프트웨어에서 직접 구현하고 싶습니다.

아이디어가 있습니까?

고맙습니다

도움이 되었습니까?

해결책

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 헤더.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top