我已经看到很多关于人们在询问何时从BaseSpider继承的问题 或者InitSpider。
Setting sticky cookie in scrapy
class TestSpider(InitSpider):
...
rules = (Rule(SgmlLinkExtractor(allow=('products/./index\.html', )), callback='parse_page'),)
def init_request(self):
return Request(url = self.init_url, callback=self.parse_js)
现在我已经看到BaseSPider没有任何"规则"选择,但人们仍在写这个。
我想知道我是不是错了
我还没有看到任何高级成员在这个问题中提到这个问题
答案 0 :(得分:0)
根据不同类型蜘蛛的源代码,我们可以得出以下结论:
实施规则:
不实施规则:
如果由于有人在CrawlSpider之外的蜘蛛中定义规则的所有示例而您不相信这一点,您可以通过创建引用callback1
并在其中声明的规则来测试这一点。 callback1
符合以下几行:
print "We're in callback1 so the rule must work"
如果在运行非CrawlSpider蜘蛛时看到该语句,则表示已实施规则。