今天在使用pyquery库读取本地HTML文件时报错:
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa8 in position 805: illegal multibyte sequence
代码如下:
from pyquery import PyQuery as pq
path = r'../../xx.html'
html = pq(filename=path)
print(html('h1'))
该错误通常是因为编码方式不一致导致的
一种情况是,如果HTML采用GBK编码方式,而IDE默认采用UTF-8编码方式,导致无法正常解码
另一种情况是,当CSV文件的表头包含中文时,可能导致同样的错误
总的来说,你需要在读取文件时保证正确的编码方式,匹配文件的实际编码方式
对于采用非UTF-8编码的HTML,可以使用open()指定正确的编码打开文件:
with open(r'../../xx.html', "r", encoding="utf-8") as file:
content = file.read()
html = pq(content)
print(html('h1'))
对于包含中文表头的CSV,也是同样的道理:
data = pd.read_csv(r'../../xx.csv', encoding="utf-8")