我在用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(使用前将#替换为@)