问题描述
||
我需要将更多域添加到allowed_domains中,所以我不会得到“过滤到的异地请求”。
我的应用获取要从数据库中获取的网址,因此无法手动添加它们。
我试图覆盖蜘蛛初始化
像这样
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无效。
我需要更改某些配置以禁用域检查?我不想要这个,因为我只想要数据库中的那个,但是暂时可以帮助我禁用域检查。
谢谢!!
解决方法
\'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)