python - 在文本文件上书写,重音和特殊字符显示不正确

标签 python encoding utf-8 web-crawler utf

这就是我正在做的事情,我在网站上进行网络爬行以供个人使用,以复制文本并将书籍的章节放在文本格式上,然后使用另一个程序将其自动转换为 pdf 以将其放入我的云中。一切都很好,直到发生这种情况:特殊字符没有正确复制,例如重音在文本文件中显示为:\xe2\x80\x99,而 - 显示为\xe2\x80\x93。我使用了这个(Python 3):

    for text in soup.find_all('p'):
        texta = text.text
        f.write(str(str(texta).encode("utf-8")))
        f.write('\n')
因为我在读取这些字符时遇到了错误并且它只是停止了我的程序,所以我将所有内容编码为 utf-8 并使用 python 的方法 str() 将所有内容重新转换为字符串
如果有人对我的问题有更好的解决方案,我将发布整个代码,这是将网站从第 1 页抓取到 max_pages 的部分,您可以在第 21 行对其进行修改以获取本书的更多或更少章节:
import requests

from bs4 import BeautifulSoup

def crawl_ATG(max_pages):
    page = 1
    while page <= max_pages:
        x= page
        url = 'http://www.wuxiaworld.com/atg-index/atg-chapter-' + str(x) + "/"
        source = requests.get(url)
        chapter = source.content
        soup = BeautifulSoup(chapter.decode('utf-8', 'ignore'), 'html.parser')
        f = open('atg_chapter' + str(x) + '.txt', 'w+')
        for text in soup.find_all('p'):
        texta = text.text
            f.write(str(str(texta).encode("utf-8")))
            f.write('\n')
        f.close
        page +=1
    
crawl_ATG(10)
当我得到这个问题的解决方案时,我将清理第一批无用的行,这些行是稍后复制的。谢谢

最佳答案

我发现解决此问题的最简单方法是添加 encoding= "utf-8"在打开函数中:

with open('file.txt','w',encoding='utf-8') as file :
   file.write('ñoño')

关于python - 在文本文件上书写,重音和特殊字符显示不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33761993/

相关文章:

python - 错误 : 'function' object is not subscriptable

python - 如何将 .write() 用于外语字符(ã、à、ê、ó、...)

xml - 无法支持 ColdFusion 生成的 XML 文件中的非 UTF-8 字符

python - flask : ImmutableMultiDict has no attribute

python - 我可以用可变字符串文字替换 Python "If"语句的一部分吗?

python - 如何解决OverflowError:Python int太大而无法使用opencv转换为C?

PHP代码丢失,因为文件编码

java - 导出文件编码问题

java - 拆分UTF-8字符串的正确方法

Laravel Route() 参数 UTF-8 问题