1

我有一个很大的 HTML 源代码,我想解析(约 200,000 行)行,而且我相当肯定整个过程中存在一些糟糕的格式。我一直在研究一些解析器,似乎 Beautiful Soup、lxml、html5lib 是最受欢迎的。通过阅读这个网站,似乎 lxml 是最常用和最快的,而 Beautiful Soup 速度较慢,但​​会导致更多的错误和变化。

我对 Beautiful Soup 文档http://www.crummy.com/software/BeautifulSoup/bs4/doc/以及 BeautifulSoup(markup, "lxml") 或 BeautifulSoup(markup, html5lib) 等命令有点困惑。在这种情况下,它是否同时使用 Beautiful Soup 和 html5lib/lxml?速度在这里不是真正的问题,但准确性是。最终目标是使用 urllib2 解析获取源代码,并从文件中检索所有文本数据,就像我只是复制/粘贴网页一样。

PS无论如何解析文件而不返回网页视图中不存在的任何空格?

4

1 回答 1

4

我的理解(在一些事情上使用 BeautifulSoup)是它是像 lxml 或 html5lib 这样的解析器的包装器。使用指定的任何解析器(我相信默认是 HTMLParser,python 的默认解析器),BeautifulSoup 会创建一个标签元素树,这样可以很容易地导航和搜索 HTML 以查找在标签中继续存在的有用数据。如果您真的只需要网页中的文本而不是来自特定 HTML 标记的更具体的数据,您可能只需要类似于以下的代码片段:

from bs4 import BeautifulSoup
import urllib2
soup = BeautifulSoup(urllib2.urlopen("http://www.google.com")
soup.get_text()

get_text 对于复杂的网页不是很好(它偶尔会得到随机的 javascript 或 css),但如果你掌握了如何使用 BeautifulSoup 的窍门,那么只获取你想要的文本应该不难。

出于您的目的,您似乎不需要担心让其他解析器之一与 BeautifulSoup(html5lib 或 lxml)一起使用。BeautifulSoup 可以自己处理一些草率的问题,如果不能,它会给出一个关于“格式错误的 HTML”或类似内容的明显错误,这将表明安装 html5lib 或 lxml。

于 2012-06-08T03:44:13.583 回答