Заголовок длины контента не такой же, как при его расчете вручную?Python

Программы на Python
Ответить
Anonymous
 Заголовок длины контента не такой же, как при его расчете вручную?

Сообщение Anonymous »

Ответ здесь (размер необработанного ответа в байтах):


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

Код: Выделить всё

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

Однако это не позволит получить точную длину контента. Например, посмотрите этот код Python:

Код: Выделить всё

import sys
import requests

def proccessUrl(url):
try:
r = requests.get(url)
print("Correct Content Length: "+r.headers['Content-Length'])
print("bytes of r.text       : "+str(sys.getsizeof(r.text)))
print("bytes of r.content    : "+str(sys.getsizeof(r.content)))
print("len r.text            : "+str(len(r.text)))
print("len r.content         : "+str(len(r.content)))
except Exception as e:
print(str(e))

#this url contains a content-length header, we will use that to see if the content length we calculate is the same.
proccessUrl("https://stackoverflow.com")
Если мы попробуем вручную вычислить длину контента и сравнить ее с тем, что указано в заголовке, мы получим гораздо больший ответ?

Код: Выделить всё

Correct Content Length: 51504
bytes of r.text       : 515142
bytes of r.content    : 257623
len r.text            : 257552
len r.content         : 257606
Почему len(r.content) не возвращает правильную длину содержимого? И как мы можем вручную точно рассчитать его, если заголовок отсутствует?

Подробнее здесь: https://stackoverflow.com/questions/508 ... ulating-it
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»