无法打开带有中文字符的html文件

时间:2017-04-21 15:46:03

标签: encoding utf-8 web-scraping readfile python-3.6

大家,我在尝试打开包含中文字符的HTML文件时遇到麻烦,这里是代码

#problem with chinese character
file =wget.download("http://nba.stats.qq.com/player/list.htm#teamId=1")
with open(file,encoding ='utf-8') as f:
    html = f.read()
    print(html) 

但是在输出中我得到如下错误

    319         # decode input (taking the buffer into account)
    320         data = self.buffer + input
--> 321         (result, consumed) = self._buffer_decode(data, self.errors, final)
    322         # keep undecoded input until the next call
    323         self.buffer = data[consumed:]

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xcc in position 535: invalid continuation byte

我搜索了一段时间,我看到了一些类似的问题,但解决方案似乎使用了latin-1,这显然不是这里的情况,我不知道如何使用哪种编码?

有什么建议吗?谢谢〜

1 个答案:

答案 0 :(得分:0)

您所引用的网页未采用UTF-8编码进行编码,而是采用GBK进行编码。您可以通过查看标题来判断:

<meta charset="GBK">

如果您指定encoding='gbk',它将会正常工作。

另一方面,除非必须,否则我会选择不使用wget,而是使用Python标准库附带的urllib。它还保存了磁盘写入,代码更简单:

import urllib.request

with urllib.request.urlopen("http://nba.stats.qq.com/player/list.htm") as file:
    html = file.read()
    print(html.decode('gbk'))