Отклонить правило Scrapy

Как я могу запретить очистку определенных частей веб-сайта с помощью правил в Scrapy.

Я хочу, чтобы Scrapy сканировал ссылки, соответствующие www.example.com/help/nl/, и запрещал все ссылки, соответствующие www.example.com/help/en/ и www.example.com/website/.

У меня есть следующий код:

class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['example.com', ]
    start_urls = ['https://www.example.com/help/nl/', ]
    rules = (
        Rule(SgmlLinkExtractor(allow=(r'/help/nl/',)), callback='parse_response'),
    )

Но он сканирует весь сайт.

ОБНОВЛЕНИЕ

Я хочу, чтобы Scrapy переходил ТОЛЬКО по ссылкам, содержащим /help/nl/

Rule(SgmlLinkExtractor(allow=(r'/help/nl/',), deny=(other than /help/nl/), callback='parse_response')

person nelsonvarela    schedule 18.03.2013    source источник
comment
Какой URL/веб-сайт вы сканируете?   -  person Talvalin    schedule 18.03.2013
comment
online.milieubarometer.nl/help/nl   -  person nelsonvarela    schedule 18.03.2013
comment
Каково значение downloader/response_count при запуске сканера (оно будет показано в конце журнала) и не могли бы вы отредактировать вопрос, чтобы показать некоторые из просканированных страниц, которые вы хотели бы исключить? Я просто запустил код с вашим правилом и правилом Ахтера, и просканировано одинаковое количество страниц, и все они были вида ./help/nl/.   -  person Talvalin    schedule 18.03.2013


Ответы (2)


попробуй это

class MySpider(CrawlSpider):
    name = 'myspider'
    allowed_domains = ['example.com', ]
    start_urls = ['https://www.example.com/help/nl/', ]
    rules = (
        Rule(SgmlLinkExtractor(allow=(r'/help/nl/',),deny=(r'/en/$',r'/website/$',)), callback='parse_response'),
    )
person akhter wahab    schedule 18.03.2013

Моя решимость была очень похожа на ответ @akhter. Однако я не использовал регулярное выражение.

Я использовал:

deny=('/help', '/website')

Это должно сделать так, чтобы он блокировал все, что имеет это в URL-адресе (/help или /website)

Надеюсь, поможет

person Max Uland    schedule 27.04.2016