Frage

Ich bin Programmierung eine Software in Python zu HTTP PDF aus einer Datenbank herunterladen. Manchmal ist der Download mit dieser Meldung stoppen:

retrieval incomplete: got only 3617232 out of 10689634 bytes

Wie kann ich fragen, um den Download zu starten, wo es stoppt die 206 Partial Content HTTP-Funktion?

Ich kann es tun wget -c verwenden und es funktioniert ziemlich gut, aber ich würde es gerne direkt in meiner Python-Software implementieren.

Jede Idee?

Danke

War es hilfreich?

Lösung

Sie können einen Teil-Download anfordern, indem Sie einen GET mit dem Range Header gesendet:

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'

Achten Sie darauf, die Content-Range zu überprüfen, um zu erfahren, was Bytes tatsächlich heruntergeladen wurde, da Ihr Bereich außerhalb der Grenzen sein kann, und / oder nicht alle Server scheinen die Range Header zu respektieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top