零工 - 如何用eNeper中的项目密钥导出CVS文件



我不想使用-o命令导出CSV,而是通过我的零工脚本创建它。我的CSV文件确实与项目导出了很好的导出,但我没有标题。我想有一个与我的物品钥匙相对应的标头。

  • 我如何用项目键修复标头?

我在几个论坛和教程中看到了标题必须在pipelines.py中定义。我尝试了使用open_spider的不同解决方案,但它不起作用。

这是我的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 

最新更新