Gli argomenti dello spider vengono passati nel comando di ricerca per indicizzazione mediante l'opzione -a
. Per esempio:
scrapy crawl myspider -a category=electronics -a domain=system
ragni possono accedere gli argomenti nelle loro inizializzatori:
class MySpider(scrapy.Spider):
name = 'myspider'
def __init__(self, category='', **kwargs):
self.start_urls = ['http://www.example.com/category/%s' % category]
super().__init__(**kwargs) # python3
self.log(self.domain) # system
Tratto da doc Scrapy: http://doc.scrapy.org/en/latest/topics/spiders.html#spider-arguments
Aggiornamento 2013: Aggiungere secondo argomento
Aggiornamento 2015: modifica la dicitura
Aggiornamento 2016: Utilizzare più recente classe di base e aggiungere super, grazie @Birla
Aggiornamento 2017: Usa python3 eccellente
# previously
super(MySpider, self).__init__(**kwargs) # python2
fonte
2013-03-25 15:21:52
Hey, grazie per la risposta. Ma Diciamo che voglio passare due argomenti, dovrei usare qualcosa come: Scrapy crawl myspider -a Categoria = elettronica domain = sistema o Scrapy crawl myspider -a Categoria = elettronica -a domain = sistema –
scrapy crawl myspider -a category = elettronica -a dominio = sistema –
Il codice sopra riportato funziona solo parzialmente per me. Per es. Se definisco il dominio usando 'self.domain', non riesco ancora ad accedervi al di fuori del metodo' __init__'. Python genera un errore non definito. A proposito, perché hai omesso la chiamata "super"? PS. Sto lavorando con la classe CrawlSpider – Birla