gpt4 book ai didi

python - 如何使用 BaseItemExporter 中的 fields_to_export 属性来订购我的 Scrapy CSV 数据?

转载 作者:IT老高 更新时间:2023-10-28 20:52:10 26 4
gpt4 key购买 nike

我做了一个简单的Scrapy我从命令行使用的蜘蛛将我的数据导出为 CSV 格式,但数据的顺序似乎是随机的。如何对输出中的 CSV 字段进行排序?

我使用以下命令行获取 CSV 数据:

scrapy crawl somwehere -o items.csv -t csv

根据this Scrapy 文档,我应该可以使用 BaseItemExporter 类的 fields_to_export 属性来控制顺序。但我不知道如何使用它,因为我没有找到任何简单的例子来遵循。

请注意:此问题与 THIS 非常相似一。然而,这个问题已经超过 2 年了,并且没有解决 many recent changes 的问题。到 Scrapy 并没有提供令人满意的答案,因为它需要破解以下之一或两者:

解决一些以前的问题,似乎已经解决了......

提前非常感谢。

最佳答案

要使用这样的导出器,您需要创建自己的 Item 管道来处理您的蜘蛛输出。假设您有简单的案例,并且您希望将所有蜘蛛输出放在一个文件中,这是您应该使用的管道 (pipelines.py):

from scrapy import signals
from scrapy.contrib.exporter import CsvItemExporter

class CSVPipeline(object):

def __init__(self):
self.files = {}

@classmethod
def from_crawler(cls, crawler):
pipeline = cls()
crawler.signals.connect(pipeline.spider_opened, signals.spider_opened)
crawler.signals.connect(pipeline.spider_closed, signals.spider_closed)
return pipeline

def spider_opened(self, spider):
file = open('%s_items.csv' % spider.name, 'w+b')
self.files[spider] = file
self.exporter = CsvItemExporter(file)
self.exporter.fields_to_export = [list with Names of fields to export - order is important]
self.exporter.start_exporting()

def spider_closed(self, spider):
self.exporter.finish_exporting()
file = self.files.pop(spider)
file.close()

def process_item(self, item, spider):
self.exporter.export_item(item)
return item

当然你需要记住在你的配置文件(settings.py)中添加这个管道:

ITEM_PIPELINES = {'myproject.pipelines.CSVPipeline': 300 }

关于python - 如何使用 BaseItemExporter 中的 fields_to_export 属性来订购我的 Scrapy CSV 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20753358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com