首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BeautifulSoup (bs4):如何忽略格式错误的HTML中的结束标记

BeautifulSoup (bs4):如何忽略格式错误的HTML中的结束标记
EN

Stack Overflow用户
提问于 2016-04-11 02:15:20
回答 1查看 1.4K关注 0票数 3

我正在使用优美汤(bs4)来废弃HTML页面。它有list <ul>,它有<li>,它包含一些有趣的链接(href)。

片段

代码语言:javascript
复制
<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>。浏览器会忽略这一点,并呈现ok,但是BS4会破坏解析。是否有人试图忽略BS4中任何格式错误的标签(如果存在)?

代码语言:javascript
复制
entries = soup.find_all(lambda x: x.name == 'ul')
print(len(entries))
print(entries[0])

1
<ul>
 <!-- C 1-3 --></ul>
EN

回答 1

Stack Overflow用户

发布于 2016-04-11 02:22:21

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

代码语言:javascript
复制
soup = BeautifulSoup(pg, "html5lib")

因为html5lib解析器是最宽松的解析器。其优点是:

  • 极其宽大
  • 解析页面的方式与web浏览器所做的一样
  • 创建有效的HTML5

缺点是:

  • 很慢
  • 外部Python依赖

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

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36538789

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档