如何在网站的请求响应中正确编码德语字符?

时间:2019-04-30 21:50:32

标签: python web-scraping encoding python-requests

我想从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"

如您所见,“慕尼黑”的“ü”未正确显示在摘录中。有人知道我可以做些什么吗?

0 个答案:

没有答案