ami*_*pra 2 html python parsing beautifulsoup
我正在使用Beautifulsoup(bs4)废弃HTML页面.它有一个列表<ul>,其中<li>包含一些有趣的链接(href).
片段:
<ul>
<!-- C 1-3 --></p>
<li>
<a href="http://LINK1" target="_blank">Link1 description</a>
</li>
</ul>
<ul>
<!-- E 1-2-3-6 --></p>
<li>
<a href="LINK-2" target="_blank">Link-2 description</a>
</li>
<p><!-- E 4-5 -7-8-9-10-11 --></p>
</ul>
Run Code Online (Sandbox Code Playgroud)
问题:当我find_all()用来提取全部<ul>- 我没有得到它,因为错误的结局</p>,缺少开放<p>.浏览器忽略了这个并且渲染正常,但是BS4搞砸了解析.有人试图忽略BS4中任何格式错误的标签吗?
entries = soup.find_all(lambda x: x.name == 'ul')
print(len(entries))
print(entries[0])
1
<ul>
<!-- C 1-3 --></ul>
Run Code Online (Sandbox Code Playgroud)
我认为你应该为HTML尝试更宽松的解析器.例如:
soup = BeautifulSoup(pg, "html5lib")
Run Code Online (Sandbox Code Playgroud)
对于html5lib解析器是最宽松的解析器.优点是:
缺点是:
该文档提供了对不同解析器的优缺点的一些解释:https://beautiful-soup-4.readthedocs.org/en/latest/#installing-a-parser