Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:如何通过命令提示符将参数列表传递给spider?_Python_Web Scraping_Scrapy - Fatal编程技术网

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”,将不胜感激!