我正在使用 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/