#PY小贴士# BeautifulSoup的解析器选择

关于解析网页内容的工具 BeautifulSoup,我们之前做过介绍:

网页解析器 BeautifulSoup 上手教程

做爬虫获取网页信息,我推荐使用 bs4,比 xpath 更人性化些。

有爬虫课的同学在用 bs4 时遇到个问题:

网页拿下来是有内容的(成功获取了页面),在里面用 str 的 find 方法也能搜索到相关信息,但用 bs4 来提取就是提取不出。

后来帮他 debug 了一番,发现原因是对方网页里的 HTML 代码写得不规范,中间多了个 </html>,导致解析时认为网页已经结束,把后面的内容都截断了。

关于这一点,我们上面给的那篇文章里其实有提到:

html.parse - python 自带,但容错性不够高,对于一些写得不太规范的网页会丢失部分内容

lxml - 解析速度快,需额外安装

xml - 同属 lxml 库,支持 XML 文档

html5lib - 最好的容错性,但速度稍慢

把解析器参数换成容错度最高的 html5lib,就没这个问题了。对于一些不规范的网页很有用,但代价是解析速度会略有所下降。


(0)

相关推荐

    Database error: [You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1]

    select ID from ac_posts where ziID =  ;