Python报错:UnicodeDecodeError: ‘utf8‘ codec can‘t decode byte 0xa4 in position 712: invalid start byte

        在对一个网页进行爬取的时候,数据能取下来,最后解析的时候报错:

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa4 in position 712: invalid start byte

        意思是在进行解析的时候,使用utf8编码格式解析到712个字符的时候出错,去原网页F12,在Console中输入:document.charset,返回结果是GBK,表示该网页的编码格式是GBK,因此Python中应该使用GBK类解析,我这里使用的hyper,默认解析是utf8,我添加了参数,不让hyper帮我解析:

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False)

        可在响应读取数据处添加decode(encoding='UTF-8', errors='ignore'),解析成utf8,跳过出错的地方:

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False).decode(encoding='UTF-8', errors='ignore')

        但最好是按照原网页的数据进行解析,即转换为GBK:

conn = HTTPConnection('www.hkex.com.hk:443')

conn.request('GET', '/chi/stat/smstat/dayquot/d210219c.htm', None, None)
resp = conn.get_response()
s = resp.read(decode_content=False).decode(encoding='GBK', errors='ignore')

猜你喜欢

转载自blog.csdn.net/qq_41061437/article/details/113988940