Jobs: 暂停,恢复爬虫

    Scrapy通过如下工具支持这个功能:

    • 一个把调度请求保存在磁盘的调度器
    • 一个把访问请求保存在磁盘的副本过滤器[duplicates filter]

    要启用持久化支持,你只需要通过 设置 job directory 选项。这个路径将会存储所有的请求数据来保持一个单独任务的状态(例如:一次spider爬取(a spider run))。必须要注意的是,这个目录不允许被不同的spider共享,甚至是同一个spider的不同jobs/runs也不行。也就是说,这个目录就是存储一个 单独 job的状态信息。

    要启用一个爬虫的持久化,运行以下命令:

    有的时候,你希望持续保持一些运行长时间的蜘蛛的状态。这时您可以使用 属性,该属性的类型必须是dict. scrapy提供了内置扩展负责在spider启动或结束时,从工作路径(job directory)中序列化、存储、加载属性。

    下面这个例子展示了使用spider state的回调函数(callback)(简洁起见,省略了其他的代码):

    如果你想要使用Scrapy的持久化支持,还有一些东西您需要了解:

    请求序列化

    请求是由 pickle 进行序列化的,所以你需要确保你的请求是可被pickle序列化的。这里最常见的问题是在在request回调函数中使用 方法,导致无法序列化。

    例如, 这样就会有问题:

    这样才对: