我知道如何通过以下方式将我收集的数据导出为csv格式
scrapy crawl <spider_name> -o filename.csv
然而,我想从脚本运行我的蜘蛛,并自动写入csv(这样我就可以使用调度在特定时间运行蜘蛛)。我如何在我的代码中实现这一点?它会去哪里?也就是说,它会进入管道或我的实际蜘蛛假设这可以做到。
csbfibhn1#
Scrapy使用管道来后处理您所抓取的数据。您可以创建一个名为pipelines.py的文件,其中包含以下代码,该代码将您的数据导出到文件夹exports中。以下是我在一个pip项目中使用的一些代码
pipelines.py
exports
from scrapy import signals from scrapy.contrib.exporter import CsvItemExporter, JsonItemExporter class ExportData(object): def __init__(self): self.files = {} self.exporter = None @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): raise NotImplementedError def spider_closed(self, spider): self.exporter.finish_exporting() file_to_save = self.files.pop(spider) file_to_save.close() def process_item(self, item, spider): self.exporter.export_item(item) return item class ExportJSON(ExportData): """ Exporting to export/json/spider-name.json file """ def spider_opened(self, spider): file_to_save = open('exports/%s.json' % spider.name, 'w+b') self.files[spider] = file_to_save self.exporter = JsonItemExporter(file_to_save) self.exporter.start_exporting() class ExportCSV(ExportData): """ Exporting to export/csv/spider-name.csv file """ def spider_opened(self, spider): file_to_save = open('exports/%s.csv' % spider.name, 'w+b') self.files[spider] = file_to_save self.exporter = CsvItemExporter(file_to_save) self.exporter.start_exporting()
您可以在github上查看项目代码。您只需要在您的scrapy设置中正确地添加这些类名。
xriantvc2#
您可以在www.example.com中将scrapy的FEED_URI设置设置settings.py为要保存数据的文件。
FEED_URI = '*filename*.csv'
您还可以在spider文件中设置自定义设置,
custom_settings = { 'FEED_URI': filename_{datetime.datetime.today().strftime("%Y-%b-%d")}.csv', 'FEED_FORMAT': 'csv', 'FEED_EXPORT_ENCODING': 'utf-8', }
2条答案
按热度按时间csbfibhn1#
Scrapy使用管道来后处理您所抓取的数据。您可以创建一个名为
pipelines.py
的文件,其中包含以下代码,该代码将您的数据导出到文件夹exports
中。以下是我在一个pip项目中使用的一些代码您可以在github上查看项目代码。您只需要在您的scrapy设置中正确地添加这些类名。
xriantvc2#
您可以在www.example.com中将scrapy的FEED_URI设置设置settings.py为要保存数据的文件。
您还可以在spider文件中设置自定义设置,