今天想使用pyquery库读取本地HTML文件时报错:UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xa1 in position 164: illegal multibyte sequence。 翻译一下就是UnicodeDecodeError: 'gbk’编解码器无法解码位置164中的字节0xa1:非法多字节序列。
分析原因: 这个HTML文件是utf-8格式的文件,存储是二进制数据,使用pyquery读取时是采用gbk进行解码!读到了非gbk编码形式的二进制数据,于是就报错了!
排错过程: 我通过查看pyquery源码,企图搜索是否存在能传解码格式的参数,发现并没有!于是只能百度一下了,发现大多数方案都是将中文去掉(emmm,他们这样等于没说)。终于找到了另一种方法,就是将html文本先读出来,使用pyquery的另一种初始化方式进行读取。但是,这种还是治标不治本,我觉得最好是能够修改解码方式,希望有懂的大神教教我!
附上修改方案:
from pyquery import PyQuery as pq
def method1():
with open("demo.html", "r", encoding="utf-8")as f:
content = f.read()
print(type(content)) # str类型
result = pq(content)
print(result('title'))
if __name__ == '__main__':
# doc = pq(filename='demo.html') # 报错
method1()
有错误的地方敬请指出!觉得写得可以的话麻烦给个赞!欢迎大家评论区或者私信交流!