在scrapy的自定义参数时,在命令正常使用-a NAME=VALUE 命令,而value正常只能传入一个值,但是value会有很多值,例如:name的值可能是百度,谷歌,CSDN等,如果要同时他们需要写多个命令来运行,如果要使它们用一个命令中运行可以使用下面这种方法:
def __init__(self, symbol='', *args, **kwargs):
super().__init__(*args, **kwargs)
self.symbol = symbol.split(',')
在start_requests函数中再加上一个for就可以实现传入多个值,例如:
import scrapy
class MySpider
neme = 'name'
def __init__(self, symbol='', *args, **kwargs):
super().__init__(*args, **kwargs)
self.symbol = symbol.split(',')
def start_requests(self):
for symbol in self.symbol:
url = 'https://zcbm.bicoin.info/futureTrade/trade/getAllTradesBySymbol?timeType=4h&symbol={}'.format(self.symbol)
yield scrapy.Request(url, headers=self.headers, callback=self.parse, meta={'symbol':symbol})
def parse(self, response):
......
最后通过命令:scrapy crawl MySpider -a symbol=baidu,google,scdn执行即可。
注意:分割每个值的符号’,'是根据split里使用的切割的值,并非固定的