2017-03-06 1 views
0

Wie kann ich eine Reihe von Dateien erstellen, wenn ich wie so meine scrapy Spinne starten:in Scrapy Geben Sie die Datei in Daten exportieren je nach geschabt Ergebnissen

year1.csv 
year2.csv 
year3.csv 

Auch die Datei löscht, wenn es und Inhalt hat vorhanden in ihm drin.

Und während Parse, den Export in jeder Datei nach scrapy Ergebnisse wie folgt:

def parse(self,response): 
if response.css('#Contact1'): 
    yield{ 
    'Name': response.css('#ContactName1 a::text').extract_first() 
    } 

if response.css('#Contact1').extract_first() is "1": 
    export to year1.csv 
if response.css('#Contact1').extract_first() is "2": 
    export to year2.csv 
if response.css('#Contact1').extract_first() is "2": 
    export to year3.csv 

Antwort

0

Sie eine Pipeline, dies zu tun benutzen konnten. Hier ist die offizielle Dokumentation: https://doc.scrapy.org/en/latest/topics/item-pipeline.html

hier ist, wie ich es tun würde. würde ich

item.py

class Year1Item(): 
    name = scrapy.field() 
class Year2Item(): 
    name = scrapy.field() 
class Year3Item(): 
    name = scrapy.field() 

dann in Ihrer Spinne Datei ein anderes Element für verschiedene Dokumente erstellen Sie diese

def parse(self,response): 
    if response.css('#Contact1'): 
    if response.css('#Contact1').extract_first() is "1": 
     item = Year1Item() 
    if response.css('#Contact1').extract_first() is "2": 
     item = Year2Item() 
    if response.css('#Contact1').extract_first() is "2": 
     item = Year3Item() 
    item['Name'] = response.css('#ContactName1 a::text').extract_first() 
    return item 

dann in Ihrer pipeline.py Datei tun konnte

def process_item(self, item, spider): 
    if isinstance(item,Year1Item): 
     export to year1.csv 
    if isinstance(item,Year2Item): 
     export to year2.csv 
    if isinstance(item,Year3Item): 
     export to year3.csv 

Innerhalb Ihrer Pipeline-Datei können Sie eine Funktion haben, die wann ausgeführt wird Ihre Spinne öffnet sich

def open_spider(self,spider): 
    #maybe here you could use python to check if the files already exist and delete them if they do 
Verwandte Themen