【发布时间】:2016-02-19 02:56:12
【问题描述】:
这就是我正在做的,我在一个网站上进行网络爬取供我个人使用,以复制文本并将一本书的章节放在文本格式上,然后用另一个程序自动将其转换为 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)
当我得到这个问题的解决方案时,我会清理第一批复制的无用行。谢谢
【问题讨论】:
-
您使用的是 Python 2 还是 Python 3?这很重要。阅读the Python Unicode howto.
-
我正在使用 Python 3,感谢您提供的链接,我将仔细研究它。 @BobDylan
-
无论您使用的是 Python 2 还是 Python 3,这都很重要,因为 str() 的含义完全不同。您需要编辑此问题以说明哪些人可以帮助您
标签: python encoding utf-8 web-crawler utf