我了解如何通过
将我的已删除数据导出为csv格式{{1}}
但是我想从脚本运行我的蜘蛛并自动写入csv(所以我可以使用计划在特定时间运行蜘蛛)。我怎么能在我的代码中实现它,它会去哪里?如果可以这样做的话,它会进入管道或我的实际蜘蛛。
答案 0 :(得分:1)
Scrapy使用管道对您抓取的数据进行后期处理。你可以创建
一个名为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设置中正确添加这些类名。