gjcxywwx 2019-06-29
今天客户反映,我们的微信爬虫,有一篇文章的信息不全:问题链接
仔细观察之后,我们发现,这篇文章是由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)之后,就可以顺利解析了。