Python Scrapy:如何通过命令提示符将参数列表传递给spider?
为幻想团队创建刮刀。正在寻找一种方法来传递一个玩家名称列表作为参数,然后为玩家名称列表中的每个玩家名称运行解析代码 我现在有类似的东西Python Scrapy:如何通过命令提示符将参数列表传递给spider?,python,web-scraping,scrapy,Python,Web Scraping,Scrapy,为幻想团队创建刮刀。正在寻找一种方法来传递一个玩家名称列表作为参数,然后为玩家名称列表中的每个玩家名称运行解析代码 我现在有类似的东西 class statsspider(BaseSpider): name = 'statsspider' def __init__ (self, domain=None, player_list=""): self.allowed_domains = ['sports.yahoo.com'] self.start_urls = [
class statsspider(BaseSpider):
name = 'statsspider'
def __init__ (self, domain=None, player_list=""):
self.allowed_domains = ['sports.yahoo.com']
self.start_urls = [
'http://sports.yahoo.com/nba/players',
]
self.player_list= "%s" % player_list
def parse(self, response):
example code
yield request
我假设通过命令行输入参数列表与仅输入一个参数相同,因此我输入如下内容:
scrapy crawl statsspider -a player_list=['xyz','abc']
问题2强> 通过输入逗号分隔的参数列表解决了第一个问题,如下所示
scrapy crawl statsspider -a player_list="abc def,ghi jkl"
现在,我想遍历每个“name”(即“abc def”),以找到他们姓氏的首字母(在本例中为“d”)
我使用代码
array = []
for player_name in self.player_list:
array.append(player_name)
print array
我最后得到的结果是[[“'”、'a'、'b'、'c'、等等]]为什么python不为每个“名称”(例如“abc def”和“ghi jkl”)指定player_名称?有人能给我解释一下这个逻辑吗?我以后可能会明白正确的方法 Shell参数是基于字符串的。您需要在代码中解析arg 命令行:
scrapy crawl statsspider -a player_list=xyz,abc
python代码:
self.player_list = player_list.split(',')
只是尝试了一下,它没有给出Ubuntu上的错误,scrapy版本0.18.4,你正在运行哪个版本?我意识到我通过命令行传递的参数是错误的。请参阅下面的@kev答案!但是现在我被一个新的问题困住了。谢谢你的回复!我现在知道如何将列表传递到命令行。它可以工作,但是现在我遇到了一个新问题,我不理解python的逻辑。如果您能看到附加的“问题2”,将不胜感激!