Python Scrapy:allowed_domains从数据库添加新域

时间:2011-06-12 04:38:47

标签: screen-scraping web-scraping scrapy

我需要向allowed_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 个答案:

答案 0 :(得分:4)

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