将url解码为utf8sig时起始字节无效

2024-09-27 00:20:51 发布

您现在位置:Python中文网/ 问答频道 /正文

代码如下:

for page in forumPages:
    try:
        req = Request(page, headers={'User-Agent': 'Mozilla/5.0'})
        sock = urlopen(req).read().decode("utf-8-sig")
        soup = BeautifulSoup(sock, 'html.parser')
        pageThreads = soup.findAll('ol',{"class":"threads"})
        print(len(pageThreads))

    except Exception as ex:
        pass

我犯了个错误 invalid start byte

如何解决异常,以便我可以有有效的文本来应用SOUP。你知道吗

urlopen(req).read()得到\xef\xbb\xbf<!DOCTYPE html PUBLIC ...

我正在尝试的页面是https://www.siasat.pk/forum/forumdisplay.php?22-Siasi-Discussion/page1

我已尝试应用thissock = urlopen(req).read().decode("utf-8-sig").encode("utf-8")但例外是一样的


Tags: 代码inforreadhtmlpagerequtf
1条回答
网友
1楼 · 发布于 2024-09-27 00:20:51

您显示的文件的开头看起来确实是unicode字节顺序标记的UTF-8版本,因此您的解码方法是正确的。显然,文件的其余部分包含无效的utf-8。由于您不控制要刮取的输入的质量,因此可以这样抑制错误,以便继续:

text = urlopen(req).read().decode("utf-8-sig", errors="replace")

这将用一个特殊的符号替换问题区域,这样您就可以看到问题出现的地方。或者用errors="ignore"让它们消失。你知道吗

相关问题 更多 >

    热门问题