scrapy异步封装管道链接MYSQL

本文介绍了一种Scrapy爬虫管道的封装方法,包括如何通过连接池操作数据库,实现异步插入数据。该方法简化了数据处理流程,提高了爬虫效率。

正常scrapy爬虫管道数据处理1

 这种方式

 封装管道

多页相同的html抓取,允许只需要填写域名即可,返回原爬虫即可抓取

多层页面抓取

直接运行测试反扒

 第二页的数据   SPAN标签识别不了,meta传递

 

item传递

 

 管道开始

异步爬虫管道封装2

class RankxsPipeline(object):

    # 初始化函数
    def __init__(self, db_pool):
        self.db_pool = db_pool

    # 从settings配置文件中读取参数
    @classmethod
    def from_settings(cls, settings):
        # 用一个db_params接收连接数据库的参数
        db_params = dict(
            host=settings['MYSQL_HOST'],
            user=settings['MYSQL_USER'],
            password=settings['MYSQL_PASSWORD'],
            port=settings['MYSQL_PORT'],
            database=settings['MYSQL_DBNAME'],
            charset=settings['MYSQL_CHARSET'],
            use_unicode=True,
            # 设置游标类型
            cursorclass=cursors.DictCursor
        )
        # 创建连接池
        db_pool = adbapi.ConnectionPool('pymysql', **db_params)
        # 返回一个pipeline对象
        return cls(db_pool)

    # 处理item函数
    def process_item(self, item, spider):
        # 把要执行的sql放入连接池
        self.db_pool.runInteraction(self.insert_into, item)
        # # 如果sql执行发送错误,自动回调addErrBack()函数
        # 返回Item
        return item

    # 处理sql函数
    def insert_into(self, cursor, item):
        # 创建sql语句
        sql = "insert into xiaoshuo(bookname,content,pic,typename) values(%s,%s,%s,%s)"
        # 执行sql语句
        cursor.execute(sql,(item['bookname'], item['content'], item['pic'], item['typename']))

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值