scrapy-4.pipeline

pipeline是清洗数据存入数据库的
清洗数据看每个人的需求,但是存入数据库是有套路的。
就是在这个class里有三个def,一个是open_spider,一个是close_spider,一个是process_item,存入sqlite3基本都是这个套路,需要注意的是数据库的列名要和items的一致。


# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://doc.scrapy.org/en/latest/topics/item-pipeline.html
import sqlite3

class ZdmPipeline(object):
    def open_spider(self,spider):
        self.conn = sqlite3.connect('test.sqlite')
        self.cur = self.conn.cursor()
        self.cur.execute('CREATE TABLE IF NOT EXISTS sm(name varchar(100),price varchar(50))')

    def close_spider(self,spider):
        self.conn.commit()
        self.conn.close()

    def process_item(self, item, spider):
        sql = 'insert into sm({}) VALUES ({})'
        col = ','.join(item.keys())
        holder = ','.join(len(item)*'?')
        self.cur.execute(sql.format(col,holder),list(item.values()))
        return item

最后按照注释所说去settings把对应的pipeline打开,就是取消注释。


settings

如果有多个需求比如要先处理数据然后在存入数据库,就写多个class,然后在settings里添加多个pipeline,数字小的先开始运行。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • https://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml 下载即可。 安装...
    怂恿的大脑阅读 5,161评论 0 7
  • 总结一下之前的spider,总的来说,Spider类就是定义了如何爬取某个(或某些)网站。包括了爬取的动作以及如何...
    王小鱼鱻阅读 4,983评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • scrapy学习笔记(有示例版) 我的博客 scrapy学习笔记1.使用scrapy1.1创建工程1.2创建爬虫模...
    陈思煜阅读 14,397评论 4 46
  • 如果你想被爱,想获得一份真正的爱情,一定先认清自己,清楚地知道自己要什么,当爱情来临的时候,一定要多花点心思,好好经营。
    主持人梓惟阅读 1,382评论 0 0

友情链接更多精彩内容