我想从transfermarkt.de中提取数据。为了获取数据,我使用了请求库。但是,无论我使用哪种编码,都无法正确解析德语特殊字符。
该站点在标头中提供UTF-8作为编码,但是请求中的自动编码会放入错误的特殊字符。通过比较,我发现使用UTF-8时r.text看起来与r.content完全相同。
所以我阅读了很多有关编码的信息(是的,我想我现在已经得到了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"
如您所见,“慕尼黑”的“ü”未正确显示在摘录中。有人知道我可以做些什么吗?