我开始学习xpath和python scrapy。到目前为止,我已经学习了这两个基础知识。但是现在我需要知道如何定义高效的xpath选择器以及scrapy和xpath中的一些最佳实践。是否有任何好的Web资源可以帮助我?
答案 0 :(得分:2)
尽管问题太广泛,我仍然会在这里留下一点。
Scrapy
拥有自己的解析HTML和提取数据的机制,但这种机制完全基于lxml
库,引自documentation page:
Scrapy带有自己的提取数据机制。他们是 称为选择器,因为它们“选择”HTML的某些部分 由XPath或CSS表达式指定的文档。
Scrapy选择器是在lxml库上构建的,这意味着它们是 速度和解析精度非常相似。
lxml
本身以其卓越的性能而着称,您可以在此处找到详细信息和基准:
关于编写xpath表达式的最佳实践," gold"规则是尝试尽可能少地搜索整个根树,引自lxml docs:
通常在树遍历中花费大量时间来寻找所解决的问题 树中的元素。如果你经常在子树上工作,那就去做吧 也可以使用深层Python对象:将子树的父级分配给 变量或将其传递给函数而不是从根开始。 这样可以更直接地访问其后代。
但是,请确保您知道瓶颈在哪里。我怀疑它是否真的存在于Scrapy使用的xpath引擎中,或者因为你编写xpath表达式的方式。 Do not optimize prematurely,衡量!