gpt4 book ai didi

python - BeautifulSoup (bs4) : How to ignore ending tag in malformed HTML

转载 作者:太空宇宙 更新时间:2023-11-04 14:59:14 25 4
gpt4 key购买 nike

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

问题:当我使用 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>

最佳答案

我认为您应该为 HTML 尝试更宽松的解析器。例如:

soup = BeautifulSoup(pg, "html5lib")

对于 html5lib 解析器是最宽松的解析器。优点是:

  • 非常宽容
  • 以与网络浏览器相同的方式解析页面
  • 创建有效的 HTML5

缺点是:

  • 很慢
  • 外部 Python 依赖

文档对不同解析器的优缺点做了一些解释:https://beautiful-soup-4.readthedocs.org/en/latest/#installing-a-parser

关于python - BeautifulSoup (bs4) : How to ignore ending tag in malformed HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36538789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com