2014-05-16 15 views
5

Ho una lista di tuple nel modulo (id, url) Ho bisogno di sottoporre a scansione un prodotto da un elenco di URL e quando questi prodotti vengono sottoposti a scansione ho bisogno di archiviare li nel database con il loro id.Passa valori aggiuntivi insieme a urls to scrapy spider

problema è che non riesco a capire come passare id per analizzare la funzione in modo che io possa memorizzare oggetto sottoposto a scansione sotto il loro id.

risposta

13

inizializzazione URL di inizio in start_requests() e passare id in meta:

class MySpider(Spider): 
    mapping = [(1, 'my_url1'), (2, 'my_url2')] 

    ... 

    def start_requests(self): 
     for id, url in self.mapping: 
      yield Request(url, callback=self.parse_page, meta={'id': id}) 

    def parse_page(self, response): 
     id = response.meta['id'] 
+0

Penso che questo funzionerà. Grazie. –

+0

La sintassi è cambiata? Perché il self.mapping viene chiamato come una funzione quando sembra essere una lista? – emschorsch

+0

@emschorsch buon punto, risolto, grazie. – alecxe

Problemi correlati