簡體   English   中英

Scrapy CSV輸出重復字段

[英]Scrapy CSV output duplicates fields

我有一個蜘蛛(下),我希望能夠每隔10天左右通過Cron作業運行一次,但是,第一次之后每次運行它。 它重寫字段,而不僅僅是將項目附加到CSV中的適當字段。 我如何才能做到,無論運行多少次,頂部只有一組字段標題,而下方只有所有數據?

import scrapy

class Wotd(scrapy.Item):
    word = scrapy.Field()
    definition = scrapy.Field()
    sentence = scrapy.Field()
    translation = scrapy.Field()


class WotdSpider(scrapy.Spider):
    name = 'wotd'
    allowed_domains = ['www.spanishdict.com/wordoftheday']
    start_urls = ['http://www.spanishdict.com/wordoftheday/']
    custom_settings = {
        #specifies exported fields and their order
    'FEED_EXPORT_FIELDS': ['word','definition','sentence','translation']
    }

def parse(self, response):
    jobs = response.xpath('//div[@class="sd-wotd-text"]')
    for job in jobs:
        item = Wotd()
        item['word'] = job.xpath('.//a[@class="sd-wotd-headword-link"]/text()').extract_first()
        item['definition'] = job.xpath('.//div[@class="sd-wotd-translation"]/text()').extract_first()
        item['sentence'] = job.xpath('.//div[@class="sd-wotd-example-source"]/text()').extract_first()
        item['translation'] = job.xpath('.//div[@class="sd-wotd-example-translation"]/text()').extract_first()
        yield item 

從我在Scrapy文檔上閱讀的內容來看,似乎我可能不得不弄亂CsvItemExporter類並設置include_headers_line = False,但我不確定在項目結構中的哪里添加該類。

首先,您沒有共享當前的項目結構,因此很難建議在具體示例中將其放在何處。

假設您的項目名為my_project 在主項目目錄(包含settings.py目錄)下,創建具有以下內容的文件exporters.py

import scrapy.exporters

class NoHeaderCsvItemExporter(scrapy.exporters.CsvItemExporter):
    def __init__(self, file, join_multivalued=', ', **kwargs):
        super(NoHeaderCsvItemExporter, self).__init__(file=file, include_headers_line=False, join_multivalued=join_multivalued, **kwargs)

NoHeaderCsvItemExporter類繼承自標准CSV導出器,僅指定我們不希望在輸出中包含標題行。

接下來,您必須在settings.py或spider的custom_settings指定CSV格式的新導出程序類。 按照您當前的方法和后面的選項,它將是:

custom_settings = {
    'FEED_EXPORT_FIELDS': ['word','definition','sentence','translation'],
    'FEED_EXPORTERS': {
        'csv': 'my_project.exporters.NoHeaderCsvItemExporter',
    }
}

請注意,使用此類不會在CSV中包含任何標題行,即使是第一次導出也是如此。

暫無
暫無

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

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