今天客户反映,我们的微信爬虫,有一篇文章的信息不全:问题链接
仔细观察之后,我们发现,这篇文章是由135微信编辑器生成的,正文内容的DOM树非常深,有几百层。
使用 lxml.etree.HTML(text).xp(xpath)进行解析的时候,如果DOM树过深,就解析会提前中止。
在build etree时,调用的是lxml.etree.XMLParser 类,而XMLParser接收 huge_tree=True的参数,允许解析巨大DOM树,而etree.HTML又接收自定义Parser,所以上述代码修改为:
lxml.etree.HTML(text, lxml.etree.XMLParser(huge_tree=True)).xp(xpath)之后,就可以顺利解析了。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。