【问题标题】:Scrapy : How to pass list of arguments through command prompt to spider?Scrapy:如何通过命令提示符将参数列表传递给蜘蛛?
【发布时间】:2013-12-27 06:21:30
【问题描述】:

为幻想团队创建刮板。寻找一种将玩家名称列表作为参数传递的方法,然后为 player_list 中的每个 player_name 运行解析代码。

我目前有这样的东西

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',... etc]] 为什么 python 不将 player_name 分配给每个 'name' (例如 'abc def '和'ghi jkl')?谁能给我解释一下这个逻辑,之后我可能会明白正确的做法!

【问题讨论】:

  • 刚刚试了一下,在Ubuntu上没有报错,scrapy版本0.18.4,你运行的是什么版本?
  • 我意识到我通过命令行传递了错误的参数。请参阅下面的@kev 答案!但现在我遇到了一个新问题

标签: python web-scraping scrapy


【解决方案1】:

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

命令行:

scrapy crawl statsspider -a player_list=xyz,abc

python 代码:

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

【讨论】:

  • 嘿@kev 感谢您的回复!我现在知道如何将列表传递到命令行。它有效,但现在我有一个新问题,我不了解 python 的逻辑。如果您能看到附加的“问题 2”,将不胜感激!
猜你喜欢
  • 1970-01-01
  • 2012-10-05
  • 2015-09-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
相关资源
最近更新 更多