如何在CrawlSpider中使用Scrapy Spider参数?

时间:2018-08-05 12:10:59

标签: python scrapy

我有一个CrawlSpider,想添加参数。
如果用户写-a one,我要先运行rules,然后写-a two-第二rules。 例如rules

rules = (
Rule(le_maxpage, callback='get_max_page_number'),
)

我阅读了https://doc.scrapy.org/en/latest/topics/spiders.html#spider-argumentshttps://doc.scrapy.org/en/latest/intro/tutorial.html?#using-spider-arguments,但我不明白如何为CrawlSpider和规则编写这些参数。

1 个答案:

答案 0 :(得分:0)

您不能使用-a one之类的模式将参数传递给Spider。它必须像-a rule=one。那么你可以做这样的事情:

class TestSpider(CrawlSpider):
    name = "test"
    rules = []

    def start_requests(self):
        url = 'http://example.com/'
        rule = getattr(self, 'rule', None)
        if rule == 'one':
            TestSpider.rules.append(rule1)
        elif rule == 'two'
            TestSpider.rules.append(rule2)
        yield scrapy.Request(url, self.parse_test)

    def parse_test(self, response):
        #do stuff