HTML内容以utf-8编码的形式报告自己,并且在大多数情况下是这样,除了一个或两个流氓无效的utf-8字符。
这显然使BeautifulSoup不清楚正在使用哪种编码,以及在将内容传递给BeautifulSoup时尝试首先解码为UTF-8时,如下所示:
soup = BeautifulSoup(response.read().depre('utf-8'))我会得到错误:
UnipreDepreError: 'utf8' prec can't depre bytes in position 186812-186813: invalid continuation byte
仔细观察输出,有一个字符实例
Ü被错误编码为无效字节序列
0xe3 0x9c,而不是正确的
0xc30x9c。
正如该问题当前评分最高的答案所暗示的那样,在解析时可以删除无效的UTF-8字符,以便仅将有效数据传递给BeautifulSoup:
soup = BeautifulSoup(response.read().depre('utf-8', 'ignore'))


