Как заставить scrapy сканировать повторяющийся URL-адрес?

Я изучаю Scrapy фреймворк для веб-сканирования.
по умолчанию он не сканирует повторяющиеся URL-адреса или URL-адреса, которые уже есть в scrapy. полз.

Как заставить Scrapy сканировать повторяющиеся URL-адреса или URL-адреса, которые уже были просканированы?
Я пытался найти информацию в Интернете, но не смог найти соответствующей помощи.

Я нашел DUPEFILTER_CLASS = RFPDupeFilter и SgmlLinkExtractor из Scrapy - Spider сканирует повторяющиеся URL-адреса, но этот вопрос противоположен что я ищу


person Alok Singh Mahor    schedule 17.04.2014    source источник


Ответы (2)


Вероятно, вы ищете аргумент dont_filter=True в Request(). См. http://doc.scrapy.org/en/latest/topics/request-response.html#request-objects

person paul trmbrth    schedule 17.04.2014
comment
Но это также отключит другие фильтры, такие как оффсайт. - person OMRY VOLK; 07.12.2018

Более элегантным решением является полное отключение дублирующего фильтра:

# settings.py
DUPEFILTER_CLASS = 'scrapy.dupefilters.BaseDupeFilter'

Таким образом, вам не нужно загромождать весь код создания запроса dont_filter=True. Еще один побочный эффект: это отключает только фильтрацию дубликатов, а не какие-либо другие фильтры, такие как фильтрация вне сайта.

Если вы хотите использовать этот параметр выборочно только для одного или нескольких поисковых роботов в вашем проекте, вы можете установить его через custom_settings в реализации паука:

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'DUPEFILTER_CLASS': 'scrapy.dupefilters.BaseDupeFilter',
    }
person Done Data Solutions    schedule 23.02.2018
comment
Это зависит от того, у меня может быть более одного паука с одинаковыми общими настройками. - person MGP; 09.12.2018
comment
Да, в этом случае вам лучше использовать custom_settings вместо settings.py. Скорректировал ответ, чтобы отразить это. - person Done Data Solutions; 12.12.2018