Загрузите файл с помощью urllib в Python с помощью функции wget -c

Я программирую программное обеспечение на Python для загрузки HTTP PDF из базы данных. Иногда загрузка останавливается с этим сообщением:

retrieval incomplete: got only 3617232 out of 10689634 bytes 

Как я могу попросить загрузку перезагрузить, где она перестает использовать функцию HTTP 206 Partial Content HTTP?

Я могу сделать это с помощью wget -c и он работает очень хорошо, но я хотел бы реализовать его прямо в моем программном обеспечении Python.

Есть идеи ?

спасибо

One Solution collect form web for “Загрузите файл с помощью urllib в Python с помощью функции 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 .

  • Как вытащить повторяющийся ключ из JSON?
  • Доступ к API Github с использованием Personal Access Token с Python urllib2
  • urllib2 - возможность проверки сертификата пропуска
  • Что лучше всего в Python: urllib2, PycURL или механизировать?
  • Использование MultipartPostHandler для данных формы POST с помощью Python
  • Как ускорить выбор страниц с urllib2 в python?
  • Использование python urllib
  • Python 2.7 - Обработчик перенаправления не передает параметры при перенаправлении
  • Python - лучший язык программирования в мире.