У меня есть Scrapy CrawlSpider, который содержит очень большой список URL-адресов для обхода. Я хотел бы иметь возможность остановить его, сохранив текущий статус и возобновить его позже, не задумываясь. Есть ли способ сделать это в рамках Scrapy?
Как я могу остановить scraw CrawlSpider, а затем возобновить его, когда он остановился?
Ответ 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