2013-12-09 21 views
7

Fantezi takım için bir kazıyıcı oluşturma. Oyuncu isimlerinin bir listesini argüman olarak iletmenin bir yolunu aramak ve daha sonra player_list içindeki her bir player_name için ayrıştırma kodunu çalıştırır.Scrapy: Örümcek komutunu kullanarak argüman listesini nasıl iletebilirim?

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

Şu anda böyle bir şey girmek yüzden bağımsız değişkenlerin bir listesini girerek tahmin ediyorum bu

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 

gibi bir şey komut satırı sadece bir argüman olarak aynıdır sahip


Sorun 2!

Şimdi her "isim" üzerinden gitmek istiyorum böylece

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

gibi argümanların virgülle ayrılmış bir listesini girerek birinci sorunu çözüldü (yani 'abc def') ilk baş harfini bulmak için onların soyadı (bu durumda 'd').

Ben

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

Ve sonuçla sona kodu kullanabilirsiniz [[ "'", 'a', 'b', 'c', ... vb]] Neden piton değil her bir 'isim' için player_name atayın (örneğin 'abc def' ve 'ghi jkl')? Birisi bana bu mantığı açıklayabilir ve muhtemelen daha sonra bunu yapmak için doğru yolu anlayacağım!

+0

sadece bir deneyin, bu Ubuntu üzerinde hata vermez, scrapy versiyonu 0.18.4 verdi hangi sürümde çalışan ? –

+0

Komut satırında hataların yanlış geçtiğini anladım. Aşağıda Kev cevabını görün! Ama şimdi yeni bir sorunla karşılaştım –

cevap

12

Kabuk bağımsız değişkenleri dize temellidir. Kodunuzda arg'i ayrıştırmanız gerekiyor.

komut satırı:

piton kodu
scrapy crawl statsspider -a player_list=xyz,abc 

:

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

Hey Kev cevabı için teşekkürler! Şimdi listeleri komut satırına nasıl geçireceğimi biliyorum. Çalışıyor, ama şimdi benim python mantığını anlamadığımla ilgili yeni bir problemim var. Eklenen "Sorun 2" yi görebiliyor olsaydın, bu çok beğenecekti! –

+0

Nevermind sorunu çözdü! –

İlgili konular