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

Python BeautifulSoup(bs4):如何在格式错误的HTML中忽略结束标记,python,html,parsing,beautifulsoup,Python,Html,Parsing,Beautifulsoup,我正在使用Beautifulsoup(bs4)来废弃HTML页面。它有一个列表,其中包含一些有趣的链接(href) 片段: <ul> <!-- C 1-3 --></p> <li> <a href="http://LINK1" target="_blank">Link1 description</a> </li> </ul> <ul> <!-- E 1-2-3-6 -

我正在使用Beautifulsoup(bs4)来废弃HTML页面。它有一个列表
,其中包含一些有趣的链接(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>

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

soup = BeautifulSoup(pg, "html5lib")
因为html5lib解析器是最宽松的解析器。优点是:

  • 极为宽大
  • 与web浏览器解析页面的方式相同
  • 创建有效的HTML5
缺点是:

  • 很慢
  • 外部Python依赖关系

文档对不同解析器的优缺点进行了一些解释:

FWIW,如果链接因任何原因发生更改,您应该引用相关文本。:-)
soup = BeautifulSoup(pg, "html5lib")