资讯专栏INFORMATION COLUMN

lxml 解析巨大深嵌套DOM树的问题

warnerwu / 2138人阅读

摘要:使用进行解析的时候,如果树过深,就解析会提前中止。在时,调用的是类,而接收的参数,允许解析巨大树,而又接收自定义,所以上述代码修改为之后,就可以顺利解析了。

今天客户反映,我们的微信爬虫,有一篇文章的信息不全:问题链接

仔细观察之后,我们发现,这篇文章是由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)之后,就可以顺利解析了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/42641.html

相关文章

  • lxml 解析巨大嵌套DOM树的问题

    摘要:使用进行解析的时候,如果树过深,就解析会提前中止。在时,调用的是类,而接收的参数,允许解析巨大树,而又接收自定义,所以上述代码修改为之后,就可以顺利解析了。 今天客户反映,我们的微信爬虫,有一篇文章的信息不全:问题链接 仔细观察之后,我们发现,这篇文章是由135微信编辑器生成的,正文内容的DOM树非常深,有几百层。 使用 lxml.etree.HTML(text).xp(xpath)进...

    Jokcy 评论0 收藏0
  • 从渲染原理谈前端性能优化

    摘要:通过主机名,最终得到该主机名对应的地址的过程叫做域名解析或主机名解析。因此去掉不必要的资源和资源合并包括及资源合并雪碧图等才会成为性能优化绕不开的方案。 作者:李佳晓 原文:学而思网校技术团队 前言 合格的开发者知道怎么做,而优秀的开发者知道为什么这么做。 这句话来自《web性能权威指南》,我一直很喜欢,而本文尝试从浏览器渲染原理探讨如何进行性能提升。全文将从网络通信以及页面渲染两个...

    everfly 评论0 收藏0
  • 一年内经验前端面试题记录

    摘要:对于,其默认大小一般是本地存储和都保存在浏览器端,且都是同源的。把变量放在闭包中和放在全局作用域,对内存的影响是一致的,这里并不能说成是内存泄露。将新的树和之前的虚拟树进行相比较,根据结果对进行精准响应。 1. JavaScript 1. JavaScript文件在什么情况下会放在html哪个位置 https://zhuanlan.zhihu.com/p/... 对于必须要在DOM加载...

    qianfeng 评论0 收藏0
  • 一年内经验前端面试题记录

    摘要:对于,其默认大小一般是本地存储和都保存在浏览器端,且都是同源的。把变量放在闭包中和放在全局作用域,对内存的影响是一致的,这里并不能说成是内存泄露。将新的树和之前的虚拟树进行相比较,根据结果对进行精准响应。 1. JavaScript 1. JavaScript文件在什么情况下会放在html哪个位置 https://zhuanlan.zhihu.com/p/... 对于必须要在DOM加载...

    kelvinlee 评论0 收藏0
  • 一年内经验前端面试题记录

    摘要:对于,其默认大小一般是本地存储和都保存在浏览器端,且都是同源的。把变量放在闭包中和放在全局作用域,对内存的影响是一致的,这里并不能说成是内存泄露。将新的树和之前的虚拟树进行相比较,根据结果对进行精准响应。 1. JavaScript 1. JavaScript文件在什么情况下会放在html哪个位置 https://zhuanlan.zhihu.com/p/... 对于必须要在DOM加载...

    jsyzchen 评论0 收藏0

发表评论

0条评论

warnerwu

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<