質問

私は、データベースからHTTPのPDFをダウンロードするPythonでソフトウェアをプログラミングしています。 時には、ダウンロードがこのメッセージを表示して停止します:

retrieval incomplete: got only 3617232 out of 10689634 bytes

どのように私はそれが206 Partial ContentのHTTP機能を使用して停止した場所を再起動するようにダウンロードを求めることができますか?

私はwget -cを使用してそれを行うことができますし、それはかなりうまく動作しますが、私はPythonのソフトウェアに直接それを実装したいと思います。

任意のアイデア?

ありがとうございます。

役に立ちましたか?

解決

あなたはRangeヘッダーを持つ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'
あなたの範囲は、すべてのサーバーがContent-Rangeヘッダを尊重するように見える範囲の外にあること、および/またはないためです。

、バイトが実際にダウンロードされているものを学ぶためにRangeをチェックするように注意してください

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top