Размер необработанного ответа в байтах

мне нужно сделать HTTP-запрос и определить размер ответа в байтах. Я всегда использовал request для простых HTTP-запросов, но мне интересно, могу ли я достичь этого с помощью raw?

>>> r = requests.get('https://github.com/', stream=True)
>>> r.raw

моя единственная проблема в том, что я не понимаю, какие необработанные возвраты или как я мог бы подсчитать этот тип данных в байтах? С помощью request и raw правильный подход?

2 ответов


просто возьми len() содержания ответа:

>>> response = requests.get('https://github.com/')
>>> len(response.content)
51671

Если вы хотите сохранить потоковую передачу, например, если содержимое (слишком) велико, вы можете перебирать куски данных и суммировать их размеры:

>>> with requests.get('https://github.com/', stream=True) as response:
...     size = sum(len(chunk) for chunk in response.iter_content(8196))
>>> size
51671

r.raw пример urllib3.ответ.Объект HttpResponse. Мы можем подсчитать длину ответа, посмотрев заголовок ответа Content-length или используйте встроенную функцию len().