Scrapy导出csv而不在cmd中指定
Scrapy export csv without specifying in cmd
我了解如何通过
将我抓取的数据导出为 csv 格式
scrapy crawl <spider_name> -o filename.csv
不过,我想从脚本 运行 我的蜘蛛并自动写入 csv(这样我就可以在特定时间使用时间表 运行 蜘蛛)。我如何将它实现到我的代码中,它会去哪里? I.E 假设这可以完成,它会进入管道还是我的实际蜘蛛。
Scrapy 使用管道 post 处理您抓取的数据。您可以创建
一个名为 pipelines.py
的文件,其中包含以下导出的代码
您的数据放入文件夹 exports
。这是我在其中一个中使用的一些代码
pip 项目
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 设置中正确添加这些 class 名称即可。
我了解如何通过
将我抓取的数据导出为 csv 格式scrapy crawl <spider_name> -o filename.csv
不过,我想从脚本 运行 我的蜘蛛并自动写入 csv(这样我就可以在特定时间使用时间表 运行 蜘蛛)。我如何将它实现到我的代码中,它会去哪里? I.E 假设这可以完成,它会进入管道还是我的实际蜘蛛。
Scrapy 使用管道 post 处理您抓取的数据。您可以创建
一个名为 pipelines.py
的文件,其中包含以下导出的代码
您的数据放入文件夹 exports
。这是我在其中一个中使用的一些代码
pip 项目
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 设置中正确添加这些 class 名称即可。