处理Redis里的数据

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

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

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

存入MongoDB

  1. 启动MongoDB数据库:sudo mongod

  2. 执行下面程序:py2 process_youyuan_mongodb.py

# process_youyuan_mongodb.py# -*- coding: utf-8 -*-import json
import redis
import pymongodef main():# 指定Redis数据库信息rediscli = redis.StrictRedis(host='192.168.199.108', port=6379, db=0)# 指定MongoDB数据库信息mongocli = pymongo.MongoClient(host='localhost', port=27017)# 创建数据库名db = mongocli['youyuan']# 创建表名sheet = db['beijing_18_25']while True:# FIFO模式为 blpop,LIFO模式为 brpop,获取键值source, data = rediscli.blpop(["youyuan:items"])item = json.loads(data)sheet.insert(item)try:print u"Processing: %(name)s <%(link)s>" % itemexcept KeyError:print u"Error procesing: %r" % itemif __name__ == '__main__':main()

存入 MySQL

  1. 启动mysql:mysql.server start(更平台不一样)
  2. 登录到root用户:mysql -uroot -p
  3. 创建数据库youyuan:create database youyuan;
  4. 切换到指定数据库:use youyuan
  5. 创建表beijing_18_25以及所有字段的列名和数据类型

  1. 执行下面程序:py2 process_youyuan_mysql.py
#process_youyuan_mysql.py# -*- coding: utf-8 -*-import json
import redis
import MySQLdbdef main():# 指定redis数据库信息rediscli = redis.StrictRedis(host='192.168.199.108', port = 6379, db = 0)# 指定mysql数据库mysqlcli = MySQLdb.connect(host='127.0.0.1', user='power', passwd='xxxxxxx', db = 'youyuan', port=3306, use_unicode=True)while True:# FIFO模式为 blpop,LIFO模式为 brpop,获取键值source, data = rediscli.blpop(["youyuan:items"])item = json.loads(data)try:# 使用cursor()方法获取操作游标cur = mysqlcli.cursor()# 使用execute方法执行SQL INSERT语句cur.execute("INSERT INTO beijing_18_25 (username, crawled, age, spider, header_url, source, pic_urls, monologue, source_url) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s )", [item['username'], item['crawled'], item['age'], item['spider'], item['header_url'], item['source'], item['pic_urls'], item['monologue'], item['source_url']])# 提交sql事务mysqlcli.commit()#关闭本次操作cur.close()print "inserted %s" % item['source_url']except MySQLdb.Error,e:print "Mysql Error %d: %s" % (e.args[0], e.args[1])if __name__ == '__main__':main()

处理Redis里的数据相关推荐

  1. python怎么获取redis中的数据_python 获取的redis里的数据怎么处理

    2017-11-06 回答 代码如下: import redis class database: def __init__(self): self.host = 'localhost' self.po ...

  2. 这么设计,Redis 10亿数据量只需要100MB内存

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:www.toutiao.com/i676764283 ...

  3. 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...

    Redis是啥?用Redis官方的话来说就是: Redis is an open source (BSD licensed), in-memory data structure store, used ...

  4. 如何优雅的分析 Redis 里存了啥?

    http://www.infoq.com/cn/articles/analysis-redis Redis 是互联网产品开发中不可缺少的常备武器,它性能高.数据结构丰富.简单易用,但同时也是因为太容易 ...

  5. Redis 10亿数据量只需要100MB内存,为什么这么牛?

    作者:java架构设计   来源:toutiao.com/i6767642839267410445 本文主要和大家分享一下redis的高级特性:bit位操作. 力求让大家彻底学会使用redis的bit ...

  6. Redis数据恢复--误删数据后一次吓尿的经历

    2019独角兽企业重金招聘Python工程师标准>>> 1.起因,一个flushdb命令 因为误操作, 输入了一个flushdb命令, 导到redis里0号库里的数据全部清空,OMG ...

  7. redis和mysql数据不一致_高并发下为什么 redis 和数据库不一致?怎么解决?

    现在的web架构一般都用redis作为缓存层来减轻数据库的压力,数据在此架构下的读取问题,一般都是先判断redis缓存是否有数据,如果有,直接返回,否则读取数据库的数据,写入redis,返回数据,这是 ...

  8. Flume+Kafka+Storm+Redis构建大数据实时处理系统:实时统计网站PV、UV+展示

    http://blog.51cto.com/xpleaf/2104160?cid=704690 1 大数据处理的常用方法 前面在我的另一篇文章中<大数据采集.清洗.处理:使用MapReduce进 ...

  9. redis清空所有数据 php

    在不影响性能的情况下,怎么快速批量删除redis数据 Redis在分布式应用中占据着越来越重要的地位,短短的几万行代码,实现了一个高性能的数据存储服务.最近dump中心的cm8集群出现过几次redis ...

最新文章

  1. [转贴]无刷新的2个DropDownList联动
  2. 洛谷 - P3391 【模板】文艺平衡树(Splay-区间反转)
  3. 2020杭电多校(二) New Equipments(最小费用最大流)
  4. [css] 用css创建一个三角形,并简述原理
  5. 使用hbuilder的maps模块调起百度地图导航
  6. 最好的Linux C/C++ IDE Windows ALL IDE,第一效率,第零浪漫
  7. Linux 命令(28)—— tee 命令
  8. apache php过期,设置HTTP使用PHP和Apache过期头
  9. 妈耶,摆脱机器音,二次宅的歌姬女友彻底活了
  10. 行业认证标准:IEC 62304-医疗设备软件安全分类标准
  11. 获取学信网学历电子版流程
  12. 游戏开发中的物理之软体
  13. Idea 报错: Variable used in lambda expression should be final or effectively final
  14. C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”
  15. Pano React Native SDK 来了!快速实现移动端音视频和白板
  16. 人脸识别之目标追踪识别
  17. 计算机汉字显示原理,计算机汉字显示原理
  18. Flutter Dio 网络接口与请求数据
  19. 游戏时间 (10 分)
  20. 手把手教你 MySQL 入门,太全啦!!

热门文章

  1. php脚本定时更新商品列表
  2. Jenkins报错Error fetching remote repo 'origin'真正解决办法
  3. Netty学习笔记(五) 使用Netty构建静态网页服务器
  4. Python正则表达式初识(九)
  5. 基于angular5+ionic3仿照网易云音乐客户端
  6. Junit3.8源码--核心类
  7. OpenWares | Open Source and Free Matters » 为rm命令增加回收站功能
  8. Windows Azure奇趣应用之Swingify
  9. 哪里是我们最好的避风港?
  10. 用pycharm搭建odoo 12, 11,10 开发调试环境