urllib3 HTTPResponse.read () возвращает пустые байты - PullRequest
1 голос
/ 04 мая 2020

Я пытаюсь прочитать содержимое веб-сайта, но получаю пустой объект байтов, b''.

import urllib3
from urllib3 import PoolManager
urllib3.disable_warnings()
https = PoolManager()

r = https.request('GET', 'https://minemen.club/leaderboards/practice/')

print(r.status)
print(r.read())

Когда я открываю URL в веб-браузере, я вижу веб-сайт и r.status равно 200 (успех).

Почему r.read() не возвращает содержимое?

Ответы [ 2 ]

3 голосов
/ 04 мая 2020

Что заставляет вас думать, что это неправильно? Попробуйте следующее, у вас будет намного больше вывода:

print(r.data)

Проверьте HTTPResponse , чтобы увидеть, как использовать полученный объект r.

0 голосов
/ 04 мая 2020

Вот как urllib3.response.HTTPResponse.read должен работать.

Это объясняется, например, здесь одним из участников urllib3:

Это о документации. Вы не можете использовать read() по умолчанию, потому что по умолчанию весь контент используется в data. Если вы хотите, чтобы read() работал, вам нужно установить preload_content=True при вызове на urlopen. Хотите попробовать?

Так что вы можете просто использовать r.data.

...