Я использую запросы для загрузки данных с веб-сайта. Содержимое представляет собой XML-файл EPG, упакованный в сжатый файл gz. Я гуглил и пробовал всю ночь, но безуспешно.
Это соответствующий фрагмент моего текущего этапа. Я пытался изменить кодировку на UTF-8 и ISO-8859-1, но это просто дает мне другую ерунду.
import xml.etree.ElementTree as ET
import requests
import gzip
url = 'http://example.com'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) '
'AppleWebKit/537.36 (KHTML, like Gecko) '
'Chrome/102.0.0.0 Safari/537.36'
}
def import_xml() -> list:
try:
response = requests.get(url, headers=headers, stream=True)
print(response)
print(response.headers['Content-Type'])
print(response.encoding)
print(response.text[:100])
print(response.content[:100])
data = import_xml
Это выводит следующее:
<Response [200]>
application/x-gzip
None
��v�J�-�~�8��^��%�u�vuI�/�����z*��HX ���o�?��t����;s��I� ,[�K{��e�@�̌��1#�����4
b'\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x0b\xec\xbd\xdbv\xdbJ\x92-\xfa~\xc68\xff\x80^\x0f\xed\xee\xb1%\x97u\xf1\xbavu\x0fI\xbe/\xcb\xf6\xb6\xb4\xec\xaaz*\x90\x84HX \xc0\x02\x08\xc9\xf4o\xec?\xd8\xfdt\x1e\xce\xf9\x88\xae\x1f;s\xce\xc8\x04I\x98\x00\x05,[\x1e\xbbK{\x8f\xaee\x9b@\x02\x88\xcc\x8c\x8c\x981#\xe2\xdf'
Обычно сжатый контент подается как application/gzip
. Похоже, запросы не знают, что делать с application/x-gzip
, поэтому вам придется расшифровывать его вручную.
import gzip
result = gzip.decompress(response.content)
Спасибо, это было так просто :) У меня действительно была эта строка в моем коде, просто закомментированная. Я предполагаю, что что-то еще было не так, когда я пробовал это. В любом случае, теперь все выглядит хорошо, еще раз спасибо.