#PY小贴士# BeautifulSoup的解析器选择
关于解析网页内容的工具 BeautifulSoup,我们之前做过介绍:
做爬虫获取网页信息,我推荐使用 bs4,比 xpath 更人性化些。
有爬虫课的同学在用 bs4 时遇到个问题:
网页拿下来是有内容的(成功获取了页面),在里面用 str 的 find 方法也能搜索到相关信息,但用 bs4 来提取就是提取不出。
后来帮他 debug 了一番,发现原因是对方网页里的 HTML 代码写得不规范,中间多了个 </html>,导致解析时认为网页已经结束,把后面的内容都截断了。
关于这一点,我们上面给的那篇文章里其实有提到:
html.parse - python 自带,但容错性不够高,对于一些写得不太规范的网页会丢失部分内容
lxml - 解析速度快,需额外安装
xml - 同属 lxml 库,支持 XML 文档
html5lib - 最好的容错性,但速度稍慢
把解析器参数换成容错度最高的 html5lib,就没这个问题了。对于一些不规范的网页很有用,但代价是解析速度会略有所下降。
赞 (0)