Python - Scrapy SgmlLinkExtractor Значение игнорирования игнорируется - PullRequest
0 голосов
/ 30 декабря 2011

Я использую Scrapy для сканирования http://www.investopedia.com.

У меня есть определение фильтра сканирования в моем файле "Spider.py":

rules = (
    # Crawl filters
    Rule(SgmlLinkExtractor(deny=settings['DENY_FILTER']), callback='parse_item', follow=True, process_links='process_links'),
)

settings ['DENY_FILTER'] извлекается из файла settings.py это к. Значения отклонения следующие:

DENY_FILTER     =   (re.compile('((?!(\?|&)page=(\d)+)\?.*)', re.I), re.compile('/markets/stocks/', re.I), re.compile('/errorpage/', re.I))

Я также пытался использовать некомпилированную версию Regex, но безрезультатно:

DENY_FILTER     =   ('((?!(\?|&)(p|P)age=(\d)+)\?.*)', '/markets/stocks/', '/(e|E)rror(p|P)age/')

Я искал в интернете несколько дней и не нашел ответов, поэтому теперь я обращаюсь к вам StackOverflow. Есть идеи?

1 Ответ

0 голосов
/ 30 декабря 2011

Попробуйте передать deny аргументы вместо

Rule(SgmlLinkExtractor(deny=('regexp1', 'regexp2',),...

Если ваши запрещающие правила будут работать, я думаю, вы должны получить доступ к DENY_FILTER, определенному в settings.py как:

DENY_FILTER =  ('regexp1', 'regexp2',)

письменно:

Rule(SgmlLinkExtractor(deny=settings.DENY_FILTER), ...

Также, пожалуйста, покажите process_links код функции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...