读取文件时,能不能跳过不能编码的字符继续读取?(语言-python)

最近在学爬虫爬小说,遇到个网页里面有一个乱码。它网页是gb2312编码,我用gb2312、gbk、utf-8都试了一遍识别不了。因为我是在整页整页的爬文字,一报错就是一章内容没下,就很难受。
想问问大家,有没有办法直接不管那个无法编码的字符,直接将提取的内容写入?
下载代码如下


#下载
async def download(url, name):
    async with semaphore:
        async with aiohttp.ClientSession() as session:
            async with session.get(url) as reques:
                reques.encoding = 'gbk'
                page = bs4.BeautifulSoup(await reques.text(), 'html.parser')
                div = page.find('div', class_="read_chapterDetail")
                p = div.find_all('p')
                # 打开文件,打开方式,数据为二进制
                with open(f'{name}.txt', mode='wb') as f:
                    for i in p:
                        text = i.text + '\n'
                        f.write(text.encode('utf-8'))
                print(f'{name}下载完成!')

可以啊,你不指定就是了呀,只是可能你保存的小说是乱码的

换个网站不就好了

你先用字节流读取,这之后把字节流分割成一个字符一个字符,再用循环调用解码函数,解不了就用固定字符代替。不就好了吗

我找到更好的解决办法了,这篇文章里面讲了怎么跳过不能编码的文件http://t.csdn.cn/JHPs1
我发现文件报错不只是编码不了的问题,还有编码错误的问题。这篇文章里面讲了怎么解决https://blog.csdn.net/mrbone11/article/details/120795683