【发布时间】:2016-01-24 12:01:16
【问题描述】:
我决定学习 C++,我真的很喜欢 www.learncpp.com 这个网站。 现在,我想制作它的 pdf 版本并打印出来,以便我可以在纸上阅读。首先,我为站点中的所有章节构建了一个 url-collector。它工作正常。
现在我正在从first chapter 创建一个html。我写了以下内容:
import requests
from bs4 import BeautifulSoup
import codecs
req = requests.get("http://www.learncpp.com/cpp-tutorial/01-introduction-to-these-tutorials/")
soup = BeautifulSoup(req.text,'lxml')
content = soup.find("div", class_="post-9")
f = open("first_lesson.html","w")
f.write(content.prettify().encode('utf-8'))
f.close()
我在文件夹中找到了我的 first_lesson.html 文件。
问题是当我打开html文件查看结果时,到处都有奇怪的符号(尝试运行代码看看)。
我添加了.encode('utf-8'),否则我会收到错误消息:
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2014' in position 155: ordinal not in range(128)
如何消除那些奇怪的符号?什么是正确的编码? 而且,如果我以后遇到类似的问题,我怎么知道什么是正确的编码?
更新:我没有在“utf-8”中编码,而是在“windows-1252”中编码并且它有效。但是,了解如何正确编码的最佳策略是什么?因为我不认为 try-this-try-that 是一个好方法
【问题讨论】:
-
为什么不scrapy.org ?它专为此类任务而开发。
-
@CodePainters、req 和 bs4 是我被教导刮的第一种方法。我乐于学习新方法(我肯定想看看 scrapy),但现在我想了解为什么这不起作用
标签: python python-2.7 encoding web-scraping