2017-10-04 6 views
0

csvをエクスポートするのに-oコマンドを使用したくないのですが、私のscrapyスクリプトから作成します。 私のcsvファイルはアイテムでうまくエクスポートされますが、ヘッダーはありません。 私のアイテムのキーに対応するヘッダを持っていたいと思います。Scrapy - ヘッダにアイテムキーを持つcvsファイルをエクスポートするには

  • アイテムのキーでヘッダーを修正するにはどうすればよいですか?

いくつかのフォーラムやチュートリアルでは、headerをpipelines.pyで定義する必要があることが分かりました。 私はopen_spidersを使ってさまざまな解決策を試みましたが、うまくいかなかった。ここで

は私pipelines.pyコードです:あなたはあなたのクモを開くと

class CsvWriterPipeline(object): 
    def __init__(self): 
     self.csvwriter = csv.writer(open(fichier1, 'wb')) 

    def open_spider(self, spider): 
     header_keys = item.fields.keys() 
     self.csvwriter.writerow(header_keys) 

    def process_item(self, item, spider): 
     self.csvwriter.writerow(
      [item['nom_course'][0], 
      item['nom_evenement'][0], 
      item['distance'][0], 
      item['date'][0], 
      item['contact_1'][0], 
      item['contact_2'][0], 
      item['organisateur'][0], 
      item['site_internet_evenement'][0], 
      item['description'][0], 
      item['prix'][0], 
      item['nb_participant'][0], 
      item['URL_Even'][0], 
      item['pays'][0], 
      item['region'][0], 
      item['ville'][0], 
      item['tag'][0]]) 
     return item 

settings.py

BOT_NAME = 'AHOTU_V2' 

SPIDER_MODULES = ['AHOTU_V2.spiders'] 
NEWSPIDER_MODULE = 'AHOTU_V2.spiders' 
ITEM_PIPELINES = { 
    'AHOTU_V2.pipelines.CsvWriterPipeline': 800, 
} 

ROBOTSTXT_OBEY = True 
+0

ですかまた、あなたが直面している問題 –

+0

はい私はsettings.py(私はコードを追加)でパイプラインを起動しました。 私の問題は、私のcsvがアイテムと共にエクスポートされているが、ヘッダがないことです。私は項目のキーでヘッダーを作成します。 – VioGeo

答えて

1

はまったく項目がありません。だから、機能の下にあなたはむしろ何をすべき

def open_spider(self, spider): 
    header_keys = item.fields.keys() 
    self.csvwriter.writerow(header_keys) 

動作しないあなたがsettings.py` `でもパイプラインをアクティブにしましたか?ヘッダが書かれているかどうかを確認するためにフィールドを持っているか、いない

class CsvWriterPipeline(object): 
    def __init__(self): 
     self.csvwriter = None 
     self.headers_written = False 

    def open_spider(self, spider): 
     self.csvwriter = csv.writer(open(fichier1, 'wb')) 

    def process_item(self, item, spider): 
     if not self.headers_written: 
      header_keys = item.fields.keys() 
      self.csvwriter.writerow(header_keys) 
      self.headers_written = True 

     self.csvwriter.writerow(
      [item['nom_course'][0], 
      item['nom_evenement'][0], 
      item['distance'][0], 
      item['date'][0], 
      item['contact_1'][0], 
      item['contact_2'][0], 
      item['organisateur'][0], 
      item['site_internet_evenement'][0], 
      item['description'][0], 
      item['prix'][0], 
      item['nb_participant'][0], 
      item['URL_Even'][0], 
      item['pays'][0], 
      item['region'][0], 
      item['ville'][0], 
      item['tag'][0]]) 
     return item 
+0

それは完璧に動作します!ありがとう! – VioGeo

関連する問題