停止scrapy。我可以查看故障吗?

时间:2016-01-13 20:25:12

标签: python scrapy web-crawler scrapy-spider

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

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它会再次起作用,但我不知道我是否在那里丢失了一些东西。

1 个答案:

答案 0 :(得分:2)

path to a directory on your filesystem,scrapy允许暂停和恢复抓取,但您需要JOBDIR设置。

JOBDIR值应该是{{3}}来保持scrapy需要恢复其必须执行的各种对象。

请注意,对于单独抓取,您需要指向其他目录:

  

此目录将用于存储所有必需的数据以保持状态   单个工作(即蜘蛛侠)。重要的是要注意这一点   目录不能由不同的蜘蛛共享,甚至不同   同一个蜘蛛的作业/运行,因为它意味着用于存储   单一工作的状态。

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

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

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

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