0

我已经看到很多关于 SO 的问题,人们在询问他们何时从 BaseSpider 或 InitSpider 继承。

在scrapy中设置粘性cookie

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 没有任何“规则”选项,但人们仍在写它。

我想知道我是否错了

我也没有看到任何高级成员在问题中提到这一点

4

1 回答 1

0

根据不同类型蜘蛛的源代码,我们可以得出以下结论。

实施规则:

  • CrawlSpider(Rule 类从第 17 行到第 28 行定义,并在第 32 行作为数据成员添加到 CrawlSpider 类)

不执行规则:

如果您因为有人在除 CrawlSpider 之外的蜘蛛中定义规则的所有示例而不相信这一点,您可以通过创建一个引用callback1并包含以下语句的规则来测试这一点callback1

print "We're in callback1 so the rule must work"

如果您在运行非 CrawlSpider 蜘蛛时看到该语句,那么您知道规则已实现。

于 2012-12-15T18:18:51.957 回答