2016-08-11 2 views
0

私は作業しているパイプラインを使用してデータをCSVファイルにエクスポートしようとしていますが、アイテムキーを最初の行として印刷したいと思いますcsvファイルの私のパイプラインコードは以下の通りです(必要に応じてさらにコードを投稿できますが、これで十分でしょう)。前もって感謝します。CSVのヘッダーとしてのPython Scrapyプリントアイテムキー

import csv 

class CsvWriterPipeline(object): 

    def __init__(self): 
     self.csvwriter = csv.writer(open('items.csv','wb')) 

    def process_item(self,item,pfr): 
     self.csvwriter.writerow([item[key] for key in item.keys()]) 
     return item 

答えて

1

あなたが経由でCSVを出力している場合ScrapyはすでにCSVエクスポートにヘッダを追加します。あなたは、ファイルを作成し、パイプラインopen_spider()方法でヘッダを書き込むことができますパイプラインで手動で行いたい場合は

scrapy crawl spidername --output results.csv 

これは、スパイダーが開くときにその中のすべてのコードを実行します。

ような何か:

def open_spider(self, spider): 
    header_keys = MyItem.fields.keys() 
    self.csvwriter.writerow(header_keys) 
+0

この私が知っています。私はコマンドラインで出力していません。 – Jeff

+0

@Jeff次に、パイプラインで実行する可能性が最も高いです。アイテムに含まれているキーを読み取って、CSVファイルに一度書き込むことができます。詳細は私の編集を参照してください。 – Granitosaurus

+0

これはまさに私が探していたものです。私はアイテムを渡していないので、__init__でそれを行う方法を見ていないが、これは素晴らしいようだ。ありがとう。 – Jeff

関連する問題