【发布时间】:2016-03-26 01:04:24
【问题描述】:
我已经阅读了很多关于 BeautifulSoup 的好东西,这就是为什么我目前正在尝试使用它来抓取一组 HTML 格式错误的网站。
不幸的是,BeautifulSoup 的一个功能目前几乎是个大热门:
似乎当 BeautifulSoup 遇到一个从未打开的结束标记(在我的情况下为 </p>)时,它决定改为结束文档。
此外,在这种情况下,find 方法似乎不搜索(自诱导)</html> 标记后面的内容。这意味着当我感兴趣的块恰好位于虚假的结束标记后面时,我无法访问内容。
有没有办法可以配置 BeautifulSoup 以忽略不匹配的结束标签,而不是在遇到它们时关闭文档?
【问题讨论】:
-
鉴于这种行为,我认为您使用的是
html5lib。 HTML 规范说,堆栈中没有p元素的</p>会打开一个新元素,因此您在这里看到的是标准所说的以及所有浏览器所做的。 -
我有类似的行为,错误的
</span>结束标记正在截断表格(page.find('table')只返回表格的一部分直到错误的标记),使用“html.parser” . lxml 和 html5lib 都成功处理了它,所以我们选择了 lxml,因为它更快。
标签: python html python-3.x beautifulsoup