暂停Scrapy。我能得到一个分解吗?

3

我希望能够启动/暂停/恢复一个爬虫,我正在尝试使用

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个回答

3

正如文档中所解释的那样, scrapy允许暂停和恢复爬取,但需要设置JOBDIR

JOBDIR的值应该是文件系统上的目录路径,用于持久化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

明白了。我以为是负1,其实只是将文件命名为文件#1。感谢您的解释。 - Nick

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接