栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何抓取导出项目以将每个项目的CSV文件分开

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何抓取导出项目以将每个项目的CSV文件分开

我在这里发布了我用来

MultiCSVItemPipeline
基于上述drcolossos的答案生成代码的代码。

该管道假定所有Item类均遵循* Item约定(例如TeamItem,EventItem),并创建team.csv,event.csv文件并将所有记录发送到适当的csv文件。

from scrapy.exporters import CsvItemExporterfrom scrapy import signalsfrom scrapy.xlib.pydispatch import dispatcherdef item_type(item):    return type(item).__name__.replace('Item','').lower()  # TeamItem => teamclass MultiCSVItemPipeline(object):    SaveTypes = ['team','club','event', 'match']    def __init__(self):        dispatcher.connect(self.spider_opened, signal=signals.spider_opened)        dispatcher.connect(self.spider_closed, signal=signals.spider_closed)    def spider_opened(self, spider):        self.files = dict([ (name, open(CSVDir+name+'.csv','w+b')) for name in self.SaveTypes ])        self.exporters = dict([ (name,CsvItemExporter(self.files[name])) for name in self.SaveTypes])        [e.start_exporting() for e in self.exporters.values()]    def spider_closed(self, spider):        [e.finish_exporting() for e in self.exporters.values()]        [f.close() for f in self.files.values()]    def process_item(self, item, spider):        what = item_type(item)        if what in set(self.SaveTypes): self.exporters[what].export_item(item)        return item


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376240.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号