2013-12-09 27 views
7

为幻想团队创建一个刮板。寻找一种方法来传递玩家名称列表作为参数,然后对于player_list中的每个player_name运行解析代码。Scrapy:如何通过命令提示符将参数列表传递给蜘蛛?

我现在有这样的事情

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" 

我现在想通过每一个“名称”解决的第一个问题(即“ABC DEF”)找到的第一个初步的姓氏(在这种情况下是'd')。

我使用的代码

array = [] 
for player_name in self.player_list: 
    array.append(player_name) 
print array 

而我最终的结果[ “'”, 'A', 'B', 'C',...等]为什么不蟒将player_name分配给每个'名字'(例如'abc def'和'ghi jkl')?有人可以向我解释这个逻辑吗,我可能会理解事后做正确的做法!

+0

只是给它一个尝试,它并没有给Ubuntu上的错误,scrapy版本0.18.4,你运行的是什么版本? –

+0

我意识到我通过命令行错误地传递了参数。请参阅下面的@kev答案!但现在我坚持一个新问题 –

回答

12

Shell参数是基于字符串的。你需要在代码中解析arg。

命令行:

scrapy crawl statsspider -a player_list=xyz,abc 

Python代码:

self.player_list = player_list.split(',') 
+0

嘿@kev感谢您的答复!我现在知道如何将列表传递到命令行。它的工作原理,但现在我有一个新的问题,我不明白python的逻辑。如果你能看到附加的“问题2”,将不胜感激! –

+0

没关系解决了这个问题! –

相关问题