zoukankan      html  css  js  c++  java
  • scrapy基础知识之 处理Redis里的数据:

    数据爬回来了,但是放在Redis里没有处理。之前我们配置文件里面没有定制自己的ITEM_PIPELINES,而是使用了RedisPipeline,所以现在这些数据都被保存在redis的xx:items键中,所以我们需要另外做处理。

    在目录下可以看到一个process_items.py文件,这个文件就是scrapy-redis的example提供的从redis读取item进行处理的模版。

    假设我们要把xx:items中保存的数据读出来写进MongoDB或者MySQL,那么我们可以自己写一个process_xx_profile.py文件,然后保持后台运行就可以不停地将爬回来的数据入库了。

    存入MongoDB

    在目录下新建process_item_mongo.py文件

    #coding=utf-8
    import pymongo
    import redis
    import json

    def process_item():
        Redis_conn=redis.StrictRedis(host='localhost',port=6379,db=0)
        Mongo_conn=pymongo.MongoClient(host='localhost',port=27017)
        db_name=Mongo_conn["dbname"]
        table_name=db_name["tablename"]
        while True:
            source, data = Redis_conn.blpop(["xx:items"])
            data = json.loads(data.decode("utf-8"))
            table_name.insert(data)
    if __name__=="__main__":
        process_item()

    存入 MySQL

    在目录下新建process_item_mysql.py文件

    #coding=utf-8
    import pymysql
    import redis
    import json

    def process_item():
        Redis_conn=redis.StrictRedis(host='127.0.0.1',port=6379,db=0)
        MySql_conn=pymysql.connect(host='127.0.0.1',user='',passwd='',port=3306,db='dbname')
        while True:
            source,data=Redis_conn.blpop("xx:items")
            data=json.loads(data.decode("utf-8"))
            cur=MySql_conn.cursor()
            sql=("insert into xx(字段)"
                 "VALUES (%s)")
            lis = (data['xx'])
            cur.execute(sql,lis)
            MySql_conn.commit()
            cur.close()
            MySql_conn.close()
        if __name__=="__main__":
            process_item()
    需要新建数据库以及表,字段

  • 相关阅读:
    接口测试用例设计方法
    接口测试的总结文档
    数据库操作语句类型(DQL、DML、DDL、DCL)简介
    MySQL基础学习笔记
    Python2爬取内涵段子
    Python编程笔记
    Python核心编程笔记--动态属性
    Python核心编程笔记--私有化
    Python核心编程笔记--浅拷贝与深拷贝
    python核心编程笔记--模块的导入
  • 原文地址:https://www.cnblogs.com/huwei934/p/6971682.html
Copyright © 2011-2022 走看看