Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: nelsonvarelaОтветов: 2

Как я могу запретить очистку определенных частей веб-сайта с помощью правил в 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')
  • Какой URL/веб-сайт вы сканируете? Talvalin 18.03.2013
  • online.milieubarometer.nl/help/nl nelsonvarela 18.03.2013
  • Каково значение downloader/response_count при запуске сканера (оно будет показано в конце журнала) и не могли бы вы отредактировать вопрос, чтобы показать некоторые из просканированных страниц, которые вы хотели бы исключить? Я просто запустил код с вашим правилом и правилом Ахтера, и просканировано одинаковое количество страниц, и все они были вида ./help/nl/. Talvalin 18.03.2013

scrapy

Ответы

Ответ 1 · akhter wahab

попробуй это

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'),
    )

Ответ 2 · Max Uland

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

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

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

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

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы