python - 解析源代码(Python)方法: Beautiful Soup, lxml、html5lib区别?

标签 python parsing beautifulsoup lxml

我有一个大型 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 解析获取源代码,并从文件中检索所有文本数据,就好像我只是复制/粘贴网页一样。

附言有没有办法在不返回网页 View 中不存在的任何空白的情况下解析文件?

最佳答案

我的理解(已经将 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。

关于python - 解析源代码(Python)方法: Beautiful Soup, lxml、html5lib区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10942730/

相关文章:

python - url 无法处理代码,但可以手动搜索

python - 在 pyspark 数据框中循环两列时向新列添加值

python - 如何从 %run 执行的程序访问 IPython 中的变量

c# - 从 .cs 文件中获取特定方法的源代码(在运行时)

python - BeautifulSoup不会使用selenium获取页面源

python - 如何让 BeautifulSoup 4 遵守自动关闭标签?

python - Sublime Os X 输出窗口自动换行

python : Adding a code routine at each line of a block of code

Java:如何严格解析日期?

java - 将一串数字从已解析字符串的一部分更改为 int