2017-03-06 2 views
0

に依存にデータをエクスポートするファイルScrapyで指定します。掻き取った結果、私はそうのように私のscrapyスパイダーを起動したとき、私は、ファイルのセットを作成するにはどうすればよい

year1.csv 
year2.csv 
year3.csv 

それがコンテンツを存在している場合もファイルをクリアそれの中に。

そして構文解析時に、そのようなscrapy結果に応じて各ファイルにエクスポート:

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 

答えて

0

あなたがこれを行うためにパイプラインを使用することができます。ここに公式の文書があります:https://doc.scrapy.org/en/latest/topics/item-pipeline.html

ここに私はそれをやっていくつもりです。 私は、あなたのクモのファイルで、あなたのpipeline.pyファイルで、その後

をこの

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 

を行うことができます異なる文書

item.py

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

のための別の項目を作成します

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 

パイプラインファイルの中には、あなたのスパイダーが開きます

def open_spider(self,spider): 
    #maybe here you could use python to check if the files already exist and delete them if they do 
関連する問題