2014-05-16 5 views
5

Ich habe eine Liste von Tupeln in Form (ID, URL) Ich muss ein Produkt aus einer Liste von URLs zu kriechen, und wenn diese Produkte gecrawlt werden muss ich speichern sie in der Datenbank unter ihrer ID.Pass zusätzliche Werte zusammen mit URLs zu Scrapy Spider

Problem ist, ich kann nicht verstehen, wie ID übergeben, um Funktion zu analysieren, damit ich gecrawltes Element unter ihrer ID speichern kann.

Antwort

13

initialisieren starten Urls in start_requests() und übergeben 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

Ich denke, das wird funktionieren. Vielen Dank. –

+0

Hat sich die Syntax geändert? Warum wird self.mapping als Funktion aufgerufen, wenn es sich um eine Liste handelt? – emschorsch

+0

@emschorsch guter Punkt, behoben, danke. – alecxe