Как я могу остановить scraw CrawlSpider, а затем возобновить его, когда он остановился?

У меня есть Scrapy CrawlSpider, который содержит очень большой список URL-адресов для обхода. Я хотел бы иметь возможность остановить его, сохранив текущий статус и возобновить его позже, не задумываясь. Есть ли способ сделать это в рамках Scrapy?

Ответ 1

Был вопрос о ML всего несколько месяцев назад: http://groups.google.com/group/scrapy-users/browse_thread/thread/6a8df07daff723fc?pli=1

Цитата Пабло:

Мы не только рассматриваем это, но и работаем над этим. Есть в настоящее время два рабочих патча в моем MQ, которые добавляют эту функциональность в Если кто-то захочет попробовать предварительный просмотр (они должны быть применены в заказ): http://hg.scrapy.org/users/pablo/mq/file/tip/scheduler_single_spider.... http://hg.scrapy.org/users/pablo/mq/file/tip/persistent_scheduler.patchДля запуска паука по-прежнему (без настойчивости):

scrapy crawl thespider 

Чтобы запустить паук, сохраняющий планировщик + состояние dupefilter в каталоге:

scrapy crawl thespider --set SCHEDULER_DIR=run1 

Во время обхода вы можете нажать ^ C, чтобы отменить обход и возобновить его позже с помощью:

scrapy crawl thespider --set SCHEDULER_DIR=run1 

Имя параметра SCHEDULER_DIR обязательно изменится до окончательного релиз, но идея будет такой же - что вы передаете директорию где нужно сохранить состояние.

Ответ 2

Просто хотел поделиться этой функцией, включенной в последнюю версию scrapy, но имя параметра изменилось. Вы должны использовать его следующим образом:

scrapy crawl thespider --set JOBDIR = run1

Дополнительная информация здесь http://doc.scrapy.org/en/latest/topics/jobs.html#job-directory

Ответ 3

В Scrapy теперь есть рабочая функция для этого на своем сайте, зарегистрированная здесь:

Здесь действительная команда:

scrapy crawl somespider -s JOBDIR=crawls/somespider-1