Подтвердить что ты не робот

Получите размер файла, используя python-запросы, только получая заголовок

Я просмотрел документацию по запросам, но я не могу найти ничего. Как я могу запросить только заголовок, чтобы оценить размер файла?

4b9b3361

Ответ 1

Отправьте запрос HEAD:

>>> import requests
>>> response = requests.head('http://example.com')
>>> response.headers
    {'connection': 'close',
 'content-encoding': 'gzip',
 'content-length': '606',
 'content-type': 'text/html; charset=UTF-8',
 'date': 'Fri, 11 Jan 2013 02:32:34 GMT',
 'last-modified': 'Fri, 04 Jan 2013 01:17:22 GMT',
 'server': 'Apache/2.2.3 (CentOS)',
 'vary': 'Accept-Encoding'}

Запрос HEAD похож на запрос GET, который загружает только заголовки.

Ответ 2

использовать requests.get(url, stream=True).headers['Content-length']

stream=True означает, что когда функция возвращается, загружается только заголовок ответа, тело ответа не.

Оба requests.get и request.head могут получить заголовки, но есть преимущество использования get

  • get более гибкий, если вы хотите загрузить тело ответа после проверки длины, вы можете начать с простого доступа к свойству content или с помощью iterator, который будет загружать содержимое в куски
  • "Запрос HEAD ДОЛЖЕН быть идентичным информации, отправленной в ответ на запрос GET". но это не всегда так.

вот пример получения длины открытого курса видео

MitOpenCourseUrl = "http://www.archive.org/download/MIT6.006F11/MIT6_006F11_lec01_300k.mp4"
resHead = requests.head(MitOpenCourseUrl)
resGet = requests.get(MitOpenCourseUrl,stream=True)
resHead.headers['Content-length'] # output 169
resGet.headers['Content-length'] # output 121291539