Python Scrapy: позволил_доменам добавлять новые домены из базы данных - PullRequest
3 голосов
/ 12 июня 2011

Мне нужно добавить больше доменов в allow_domains, поэтому я не получаю «Отфильтрованный внешний запрос на».

Мое приложение получает URL-адреса для извлечения из базы данных, поэтому я не могу добавить их вручную.

Я пытался переопределить паука init

как это

 def __init__(self):
        super( CrawlSpider, self ).__init__()
        self.start_urls = []
        for destination in Phpbb.objects.filter(disable=False):
                self.start_urls.append(destination.forum_link)

            self.allowed_domains.append(destination.link)

start_urls был в порядке, это была моя первая проблема, которую нужно решить. но allow_domains не влияет.

Мне нужно изменить некоторые настройки, чтобы отключить проверку домена? Я не хочу этого, поскольку мне нужны только те из базы данных, но на данный момент это может помочь мне отключить проверку домена.

спасибо !!

1 Ответ

4 голосов
/ 12 июня 2011
  • 'allowed_domains' параметр является необязательным.Чтобы начать, вы можете пропустить его, чтобы отключить фильтрацию домена
  • В scrapy/contrib/spidermiddleware/offsite.py вы можете переопределить эту функцию для своей пользовательской функции фильтрации домена:

    def get_host_regex(self, spider):
        """Override this method to implement a different offsite policy"""
        allowed_domains = getattr(spider, 'allowed_domains', None)
        if not allowed_domains:
            return re.compile('') # allow all by default
        domains = [d.replace('.', r'\.') for d in allowed_domains]
        regex = r'^(.*\.)?(%s)$' % '|'.join(domains)
        return re.compile(regex)
    
...