Ответ 1
Я считаю, что вы ищете "поддержку настойчивости", чтобы приостановить и возобновить обход.
Чтобы включить его, вы можете:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
Подробнее об этом можно узнать здесь.
Я закодировал простой искатель. В файле settings.py, ссылаясь на документацию по scrapy, я использовал
DUPEFILTER_CLASS = 'scrapy.dupefilter.RFPDupeFilter'
Если я закрою искатель и снова запустил поисковый робот, он снова очистит повторяющиеся URL. Я что-то делаю неправильно?
Я считаю, что вы ищете "поддержку настойчивости", чтобы приостановить и возобновить обход.
Чтобы включить его, вы можете:
scrapy crawl somespider -s JOBDIR=crawls/somespider-1
Подробнее об этом можно узнать здесь.
В соответствии с документация, DUPEFILTER_CLASS
уже установлен на scrapy.dupefilter.RFPDupeFilter
по умолчанию.
RFPDupeFilter
не помогает, если вы останавливаете искатель - он работает только при реальном обходе, помогает избежать очищения повторяющихся URL-адресов.
Похоже, вам нужно создать свой собственный настраиваемый фильтр на основе RFPDupeFilter
, как это было сделано здесь: как фильтровать повторяющиеся запросы на основе url в scrapy. Если вы хотите, чтобы ваш фильтр работал между сеансами обхода scrapy, вы должны хранить список обходных URL-адресов в базе данных или csv файле.
Надеюсь, что это поможет.
вы можете переписать Планировщик с помощью Redis, например scrapy-redis, тогда вы можете избежать повторного сканирования URL-адресов при повторном запуске своего проекта.