占用大量CPU资源的解析


问题内容

http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-
items
的CONCURRENT_ITEMS部分将其定义为:

在“项目处理器”(也称为“项目管道”)中并行处理的最大并发项目数(每个响应)。

这使我感到困惑。这是否意味着发送到管道的项目是并行处理的。真的是多进程的?

假设我的解析涉及很多lxml查询和xpath’ing。我应该使用Spider的parse方法本身来执行这些操作,还是应该发送包含完整响应的Item并让自定义管道类通过解析响应主体来填充Item的字段?


问题答案:

请求系统也可以并行运行,请参阅http://doc.scrapy.org/en/latest/topics/settings.html#concurrent-
requests
。Scrapy旨在处理Spider本身中的请求和解析,回调方法使其异步,并且默认情况下,多个Requests确实并行工作。

并行处理的项目管道不打算进行繁重的分析:它旨在检查并验证您在每个项目中获得的值。(http://doc.scrapy.org/en/latest/topics/item-
pipeline.html

因此,您应该在Spider本身中进行查询,因为它们旨在存在于那里。从蜘蛛的文档:

蜘蛛程序是定义如何刮除某个站点(或一组站点)的类,包括如何执行爬网(即,跟随链接)以及如何从其页面中提取结构化数据(即,刮取项)。