1

我只是使用由 scrapy-redis 重新实现的 dupfilter 和调度程序来支持从中断中恢复(Redis 仅包含两个键 - dmoz:dupfilter 和 dmoz:requests),并使用一个项目管道将项目存储在远程 MongoDB 中。

但是,使用scrapy-redis会减慢item的处理速度,而不会影响请求和爬取的速度。仅使用scrapy时,新项目以大约1000个项目/分钟的速度安装;使用 scrapy-redis 时,为 0-4 项/分钟。更具体地说,当我按下 CTRL-C 时,信息是派生的,蜘蛛正在优雅地关闭并只处理剩余的项目,没有其他竞赛任务。

INFO:已爬取 228 页(以 47 页/分钟),抓取 7 条(以 1 条/分钟)

这不是一个新问题。我在 scrapy-redis 的 Github 页面中发现了一个问题,但那里的建议不起作用(将 SCHEDULER_IDLE_BEFORE_CLOSE 设置为 0,但默认情况下它是 0 参考源代码)。 https://github.com/rmax/scrapy-redis/issues/43

以下是我的一些设置:

LOG_LEVEL = 'DEBUG'

CONCURRENT_REQUESTS = 16

SCHEDULER_IDLE_BEFORE_CLOSE = 0

DUPFILTER_CLASS = 'scrapy_redis.dupfilter.RFPDupeFilter'

SCHEDULER = 'scrapy_redis.scheduler.Scheduler'

SCHEDULER_PERSIST = True

ITEM_PIPELINE = {
    'dmoz.pipelines.dmozPipeline': 300
}

感谢您的关注!

4

0 回答 0