@Conan_Doyle

Почему при открытии сайта с помощью urlopen выводить b'\x1f\x8b\x08\?

from urllib.request import urlopen
html = urlopen("https://wallpaperscraft.ru")
print(html.read())

"""
output:

b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\xed]{\x8f\x1b\xc7\x91\xff_\x9fb\x8e\x81#\t\x10\x97\xef\xc7J\xbb\x1b8~\xc09\xe4.\x06\

и так далее...

"""
  • Вопрос задан
  • 917 просмотров
Решения вопроса 1
@eaniconer
Если посмотреть на заголовки

>>> html.info()
<http.client.HTTPMessage object at 0x10aef1518>
>>> html.info().items()


То там можно заметить ('Content-Encoding', 'gzip')
Это значит, что данные сжаты.
Нужно их распаковать:
>>> data = html.read()
>>> import gzip
>>> gzip.decompress(data)


Для получения страницы можно воспользоваться и другим способом
>>> import requests
>>> response = requests.get("https://wallpaperscraft.ru")
>>> response.content
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@marxxt
понравился ответ - поставь ✔
У вас gzip, сжаты данные

5c4977e5a5d9c086974249.png
import urllib
import zlib

html = urllib.urlopen("https://wallpaperscraft.ru")

decompressed_data=zlib.decompress(html.read(), 16+zlib.MAX_WBITS)
print decompressed_data
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы