我有一个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-arguments和https://doc.scrapy.org/en/latest/intro/tutorial.html?#using-spider-arguments,但我不明白如何为CrawlSpider和规则编写这些参数。
答案 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