bizzare编码问题只在查看源时才会使一个特定的网站乱码

时间:2018-03-27 21:11:01

标签: python unicode encoding python-requests hebrew

我正在编写一个python脚本来从一些新闻网站获取文章,我遇到了一个真正奇怪的编码问题。它是一个以色列朋友所以网站都是希伯来语,我的方法(使用请求和beautifulsoup)运作良好,直到我到这个网站,无论我做什么都保持胡言乱语。 该网站是makorishon。奇怪的是这个: 当我在浏览器中获取它时,它不是乱码,当我在firefox上使用“inspect element”时,html并不是乱码,当我从浏览器查看源代码时它不是乱码(它也不好,它显示整个页面为两个两块js之间的行,但是当我使用python时,即使将html保存到我的计算机然后在浏览器中打开保存的文件。 我已经尝试过以任何方式与希伯来语相关的所有可能的编码,每个编码都留给我一组不同的无法理解的符号。 这就像是看起来像是正常的: this is how it should look like 这是python页面保存的样子: this is how it looks like after saving 这是我所知道的唯一这样做的网站,我在其他希伯来网站上使用了相同的工具,结果很好。

用于生成此代码的代码是:

>>> import requests
>>> res = requests.get('https://www.makorrishon.co.il/')
>>> res
<Response [200]>
>>> file = open('makor1.html', 'w')
>>> file.write(res.text)
152957
>>> file.close()

这是一台Linux笔记本电脑,顺便说一句。

1 个答案:

答案 0 :(得分:0)

在写入文件之前尝试添加res.encoding = 'utf-8'

if __name__ == '__main__':
    import requests
    res = requests.get('https://www.makorrishon.co.il/')
    res.encoding = 'utf-8'
    file = open('makor1.html', 'wb')
    file.write(res.text.encode('utf-8'))
    file.close()