python - BeautifulSoup 找不到正确解析的元素

标签 python html beautifulsoup html-parsing html5lib

我正在使用 BeautifulSoup解析一堆可能非常脏的 HTML文件。我偶然发现了一件非常奇怪的事情。

HTML 来自此页面:http://www.wvdnr.gov/

它包含多个错误,如多个 <html></html> , <title>外面<head>等等……

但是,即使在这些情况下,html5lib 通常也能正常工作。事实上,当我这样做时:

soup = BeautifulSoup(document, "html5lib")

然后我美化了 soup ,我看到以下输出:http://pastebin.com/8BKapx88

其中包含大量<a>标签。

但是,当我做 soup.find_all("a")我得到一个空列表。与 lxml我也一样。

所以:以前有人偶然发现过这个问题吗?到底是怎么回事?我如何获得 html5lib 的链接找到但没有返回 find_all

最佳答案

即使正确答案是“使用另一个解析器”(感谢@alecxe),我也有另一个解决方法。出于某种原因,这也适用:

soup = BeautifulSoup(document, "html5lib")
soup = BeautifulSoup(soup.prettify(), "html5lib")
print soup.find_all('a')

返回相同的链接列表:

soup = BeautifulSoup(document, "html.parser")

关于python - BeautifulSoup 找不到正确解析的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26896558/

相关文章:

python 从href源中提取id值

python - 如何使用 Sympy 计算 lambda 表达式的导数?

python - 克隆模块并对副本进行更改

javascript - 由于来自模板的 CSS,单选按钮被禁用

html - 输入范围值的指数增长

javascript - 将日期列表添加到数组,验证并获取最大值

python - 如何获取发件人列表以及他们使用 Django 发送的相应业力总和?

python - 在 django 中扩展管理模板 CSS

python - 如何根据产品选择(例如尺寸、颜色、包装)抓取信息?

python beautifulsoup 给svg添加html标签