Как правильно закодировать немецкие символы в запросах-ответах с сайта? - PullRequest
1 голос
/ 01 мая 2019

Я хочу извлечь данные из Transfermarkt.de.Для получения данных я использую библиотеку запросов.Но независимо от того, какую кодировку я использую, немецкие специальные символы анализируются неправильно.

Сайт предоставляет UTF-8 в качестве кодировки в заголовке, но автоматическое кодирование в запросах выдает неправильные специальные символы.Сравнивая, я обнаружил, что r.text выглядит абсолютно так же, как r.content при использовании UTF-8.

Итак, я много читал о кодировке (да, я думаю, что теперь у меня есть Unicode-вещь ;-)) и пробовал разные кодировки с запросами - вот мой тест-код:

import requests

link = 'https://www.transfermarkt.de/fc-bayern-munchen/kader/verein/27/saison_id/2017'        
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101 Firefox/47.0'


r=requests.get(link, headers={"User-Agent":user_agent})

print('---------------------------------CONTENT----------')
print(r.content[4500:5000])

r.encoding = 'UTF-8'
print('-------------------------------TEXT UTF8----------')
print(r.text[4500:5000])

r.encoding = 'iso-8859-1'
print('--------------------------------TEXT iso-8859-1----------')
print(r.text[4500:5000])

Это дает следующий вывод:

-----------------------------------------CONTENT----------
FC Bayern M├╝nchen - Kader im Detail 17/18" />
<link rel="stylesheet" type="text/css" 
href="https://tmssl.akamaized.net//css/stylesheets/menue.css?lm=1556636907" />
<link rel="stylesheet" type="text/c
-----------------------------------------TEXT iso-8859-1----------
FC Bayern München - Kader im Detail 17/18" />
<link rel="stylesheet" type="text/css" 
href="https://tmssl.akamaized.net//css/stylesheets/menue.css?lm=1556636907" />
<link rel="stylesheet" type="text/c
-----------------------------------------TEXT UTF8----------
Bayern M├╝nchen - Kader im Detail 17/18" />
<link rel="stylesheet" type="text/css" 
href="https://tmssl.akamaized.net//css/stylesheets/menue.css?lm=1556636907" />
<link rel="stylesheet" type="text/css"

Как видите, «ü» в «München» не отображается правильно в отрывке.У кого-нибудь есть подсказка, что я мог бы сделать по-другому?

...