我不断收到不匹配的标签错误。我不知道为什么,craigslist 主页上的文字对我来说看起来不错,但我没有彻底浏览它。是否有更宽容的东西我可以使用,或者这是我使用标准库解析 html 的最佳选择?
3 回答
不匹配的标签错误很可能是由不匹配的标签引起的。浏览器以接受草率的 html 而闻名,并且使网页编码人员可以轻松编写格式错误的 html,因此有很多。没有理由相信 creagslist 应该不受糟糕的网页设计者的影响。
您需要使用允许这些不匹配的语法。如果您使用的解析器不允许您适当地重新定义语法,那么您就被卡住了。(可能有一个更好的 Python 库,但我不知道)。
一种替代方法是通过像 Tidy 这样的工具来运行网页,该工具可以清除此类不匹配,然后在其上运行解析器。
解析不可预测的 HTML 的最佳库是BeautifulSoup。这是项目页面的引用:
你没有写那个糟糕的页面。你只是想从中获取一些数据。现在,您并不真正关心 HTML 应该是什么样子。
这个解析器也没有。
但是它对 Python 3 没有很好的支持,在链接的末尾有更多关于这个的信息。
解析 HTML 不是一个简单的问题,使用库绝对是这里的解决方案。用于解析格式不正确的 HTML 的两个常用库是 BeautifulSup 和 lxml。
lxml支持 Python 3,它的 HTML 解析器可以很好地处理不可预测的 HTML。它很棒而且速度很快,而且它在底部使用了 c 库。我强烈推荐它。
BeautifulSoup 3.1 支持 Python 3,但也被认为是一个失败的实验”并且你被告知不要使用它,所以实际上 BeautifulSoup 还不支持 Python 3,而 lxml 作为唯一的选择。