2013-12-09 10 views
7

Tworzenie skrobaka dla zespołu fantasy. Poszukuje sposobu przekazania listy nazw graczy jako argumentów, a następnie dla każdego player_name na liście player_list uruchamia kod parsujący.Scrapy: Jak przekazywać listę argumentów za pomocą wiersza polecenia do pająka?

Obecnie mam coś takiego

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 

Jestem zakładając, wprowadzając listę argumentów jest taka sama jak jednego argumentu za pomocą wiersza polecenia więc wpisać coś takiego:

scrapy crawl statsspider -a player_list=['xyz','abc'] 

Problem 2!

rozwiązać pierwszą kwestię, wprowadzając do rozdzielany przecinkami listę argumentów jak tak

scrapy crawl statsspider -a player_list="abc def,ghi jkl" 

I teraz chce przejść przez każdego „name” (czyli „abc def”), aby znaleźć pierwsze litery swoich nazwisko (w tym przypadku "d").

użyć kodu

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

I skończyć z wynikiem [[ "'", 'a', 'b', 'c', ... etc]] Dlaczego nie pyton przypisz nazwę gracza do każdego "imienia" (np. "abc def" i "ghi jkl")? Czy ktoś może wyjaśnić mi tę logikę i prawdopodobnie zrozumiem właściwą drogę, aby to zrobić później!

+0

prostu spróbowaliśmy, nie daje błąd na Ubuntu, scrapy wersji 0.18.4, co wersja są uruchomione ? –

+0

Zrozumiałem, że przekazywałem błędne argumenty za pośrednictwem wiersza poleceń. Zobacz odpowiedź @kev poniżej! Ale teraz utknąłem z nowym numerem –

Odpowiedz

12

Argumenty powłoki są oparte na łańcuchach. Musisz sparsować arg w swoim kodzie.

linii poleceń

:

scrapy crawl statsspider -a player_list=xyz,abc 

kod Python:

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

Hej, dziękuję za odpowiedź! Teraz wiem, jak przekazywać listy do wiersza poleceń. To działa, ale teraz mam nowy problem dotyczący mnie, nie rozumiem logiki Pythona. Gdybyś mógł zobaczyć dołączony "Problem 2", który byłby bardzo doceniany! –

+0

Nevermind rozwiązało problem! –