我正在使用Scrapy设置搜寻器,并希望能够基于蜘蛛中的变量动态设置规则。我的代码是这样的:
class MainSpider(CrawlSpider):
def __init__(self, configuration):
super(MainSpider, self).__init__(configuration.name)
dispatcher.connect(self.spider_closed, signals.spider_closed)
self.product_link_id = configuration.product_link_id
rules = (
# call parse_link on all links from starting url
Rule(LinkExtractor(allow=product_link_id), callback='parse_link', follow=False),)
如您所见,我正在尝试在其中使用实例变量,该变量不起作用。我可以肯定地说,这是因为我的代码存在一个基本的Python问题,与Scrapy无关,但不确定是什么,因为我是Python的新手。
答案 0 :(得分:0)
我需要在类的顶部(在构造函数之外)定义变量,以便可以由规则选择它。像这样:
class MainSpider(CrawlSpider):
product_link_id = None
def __init__(self, configuration):
....
rules = (Rule(LinkExtractor(allow=product_link_id), callback='parse_link', follow=False),)