簡體   English   中英

Scrapy-如何使用標題中的項目密鑰導出CVS文件

[英]Scrapy - How to export a cvs file with item key in header

我不想使用-o命令導出csv,而是從我的scrapy腳本創建它。 我的csv文件可以很好地與項目一起導出,但是我沒有標題。 我想要一個與我的物品的鑰匙相對應的標題。

  • 如何使用項目的鍵修復標題?

我在幾個論壇和教程中看到,必須在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

當您打開蜘蛛時,根本沒有物品。 所以下面的功能不起作用

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

您寧願做的是有一個字段來檢查標題是否被寫入

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 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM