BeautifulSoup 找不到正确解析的元素

2024-01-09

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

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

它包含多个错误,例如多个<html></html>, <title>之外的<head>, etc...

然而,即使在这些情况下,html5lib 通常也能很好地工作。事实上,当我这样做时:

soup = BeautifulSoup(document, "html5lib")

我漂亮地打印soup,我看到以下输出:http://pastebin.com/8BKapx88 http://pastebin.com/8BKapx88

其中包含很多<a> tags.

然而,当我这样做时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")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BeautifulSoup 找不到正确解析的元素 的相关文章