2016-06-09 13 views
0

Zum Beispiel analysieren ich drei ähnliche URLs durchsuchen wollen:Scrapy Pipeline

https://example.com/book1 
https://example.com/book2 
https://example.com/book3 

Was ich will, ist in der pipeline.py, dass ich erstellen 3 Dateien mit dem Namen book1, book2 und book3, und schreiben die 3 Bücher Daten richtig und separat In der Spider.py, ich kenne die drei Bücher Name, die als Dateiname, aber nicht in der Pipeline.py Sie haben eine gleiche Struktur, so entscheide ich mich wie folgt zu codieren:

class Book_Spider(scrapy.Spider): 
    def start_requests(self): 
     for url in urls: 
      yield scrapy.Request(url, self.parse) 
    def parse(self, response): 
     # item handling 
     yield item 

Nun, wie kann ich tun?

+0

woher wissen Sie den "Dateiname" oder "Buchname", weil, wenn Sie es als Spider-Parameter festlegen können Das 'process_item' der Pipeline hat das Spider als Argument, also könntest du es in' process_item' wie 'spider.filename' bekommen – eLRuLL

Antwort

0

Smith, Wenn Sie den Buchnamen in pipeline.py wissen möchten. Es gibt zwei Optionen, entweder Sie erstellen ein Elementfeld für book_file_name und füllen es entsprechend Ihren Wünschen auf. oder Sie können es aus dem URL-Feld extrahieren, das auch ein Elementfeld ist und auf pipline.py zugreifen kann