我希望能够启动/暂停/恢复蜘蛛,并且尝试使用

scrapy crawl some spiders JOBDIR=crawls/some spider-1


但是,由于没有太多关于此处实际发生情况的信息,因此大多只是复制和粘贴。有人有更多详细信息吗?

我得到了第一部分,但不知道JOBDIR=crawls/some spider-1部分实际发生了什么。我看到人们像这样放置代码

scrapy crawl some spiders JOBDIR=crawls/some spider


..没有-1并且不知道有什么区别。我确实注意到了这一点。我倾向于敲打CTRL + C退出,这显然对我阅读的内容和我的经历都不利,因为如果我重新键入代码

scrapy crawl some spiders JOBDIR=crawls/some spider-1


..它像蜘蛛一样直接完成。

发生该错误后如何“重置”它?如果我取出-1,它将再次起作用,但是我不知道我是否在那里丢失了东西。

最佳答案

As explained in the docs,scrapy允许暂停和恢复爬网,但是您需要JOBDIR设置。

JOBDIR值应该是path to a directory on your filesystem,用于持久存储scrapy需要恢复的各种对象。

请注意,对于单独的爬网,您需要指向其他目录:


  该目录将用于存储所有需要的数据以保持状态
  一份工作(即蜘蛛跑)。重要的是要注意
  目录不能由不同的蜘蛛共享,甚至不能共享
  同一只蜘蛛的工作/运行,因为它用于存储
  一份工作的状态。


复制该文档页面中的内容:

scrapy crawl somespider -s JOBDIR=crawls/somespider-1
             ----------           -------------------
                 |                         |
         name of your spider               |
                                           |
                               relative path where to save stuff


使用JOBDIR的另一个示例scrapy crawl命令可能是:

scrapy crawl myspider -s JOBDIR=/home/myuser/crawldata/myspider_run_32


时间轴示例:

scrapy crawl myspider -s JOBDIR=/home/myuser/crawldata/myspider_run_001
# pause using Ctrl-C ...

# ...lets continue where it was left off
scrapy crawl myspider -s JOBDIR=/home/myuser/crawldata/myspider_run_001
# crawl finished properly.
# (and /home/myuser/crawldata/myspider_run_001 should not contain anything now)

# now you want to crawl a 2nd time, from the beginning
scrapy crawl myspider -s JOBDIR=/home/myuser/crawldata/myspider_run_002

08-24 13:52