处理Redis里的数据
处理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
启动MongoDB数据库:
sudo mongod
执行下面程序:
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
- 启动mysql:
mysql.server start
(更平台不一样) - 登录到root用户:
mysql -uroot -p
- 创建数据库
youyuan
:create database youyuan;
- 切换到指定数据库:
use youyuan
创建表
beijing_18_25
以及所有字段的列名和数据类型
- 执行下面程序:
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里的数据相关推荐
- python怎么获取redis中的数据_python 获取的redis里的数据怎么处理
2017-11-06 回答 代码如下: import redis class database: def __init__(self): self.host = 'localhost' self.po ...
- 这么设计,Redis 10亿数据量只需要100MB内存
点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! 来源:www.toutiao.com/i676764283 ...
- 怎么查询redis缓存的数据_阿里开发十年写出这份「Redis简明教程」+「Redis实战」请你查收...
Redis是啥?用Redis官方的话来说就是: Redis is an open source (BSD licensed), in-memory data structure store, used ...
- 如何优雅的分析 Redis 里存了啥?
http://www.infoq.com/cn/articles/analysis-redis Redis 是互联网产品开发中不可缺少的常备武器,它性能高.数据结构丰富.简单易用,但同时也是因为太容易 ...
- Redis 10亿数据量只需要100MB内存,为什么这么牛?
作者:java架构设计 来源:toutiao.com/i6767642839267410445 本文主要和大家分享一下redis的高级特性:bit位操作. 力求让大家彻底学会使用redis的bit ...
- Redis数据恢复--误删数据后一次吓尿的经历
2019独角兽企业重金招聘Python工程师标准>>> 1.起因,一个flushdb命令 因为误操作, 输入了一个flushdb命令, 导到redis里0号库里的数据全部清空,OMG ...
- redis和mysql数据不一致_高并发下为什么 redis 和数据库不一致?怎么解决?
现在的web架构一般都用redis作为缓存层来减轻数据库的压力,数据在此架构下的读取问题,一般都是先判断redis缓存是否有数据,如果有,直接返回,否则读取数据库的数据,写入redis,返回数据,这是 ...
- Flume+Kafka+Storm+Redis构建大数据实时处理系统:实时统计网站PV、UV+展示
http://blog.51cto.com/xpleaf/2104160?cid=704690 1 大数据处理的常用方法 前面在我的另一篇文章中<大数据采集.清洗.处理:使用MapReduce进 ...
- redis清空所有数据 php
在不影响性能的情况下,怎么快速批量删除redis数据 Redis在分布式应用中占据着越来越重要的地位,短短的几万行代码,实现了一个高性能的数据存储服务.最近dump中心的cm8集群出现过几次redis ...
最新文章
- [转贴]无刷新的2个DropDownList联动
- 洛谷 - P3391 【模板】文艺平衡树(Splay-区间反转)
- 2020杭电多校(二) New Equipments(最小费用最大流)
- [css] 用css创建一个三角形,并简述原理
- 使用hbuilder的maps模块调起百度地图导航
- 最好的Linux C/C++ IDE Windows ALL IDE,第一效率,第零浪漫
- Linux 命令(28)—— tee 命令
- apache php过期,设置HTTP使用PHP和Apache过期头
- 妈耶,摆脱机器音,二次宅的歌姬女友彻底活了
- 行业认证标准:IEC 62304-医疗设备软件安全分类标准
- 获取学信网学历电子版流程
- 游戏开发中的物理之软体
- Idea 报错: Variable used in lambda expression should be final or effectively final
- C#也能做机器学习?基于.NET的AI智能应用市场还是一片“处女地”
- Pano React Native SDK 来了!快速实现移动端音视频和白板
- 人脸识别之目标追踪识别
- 计算机汉字显示原理,计算机汉字显示原理
- Flutter Dio 网络接口与请求数据
- 游戏时间 (10 分)
- 手把手教你 MySQL 入门,太全啦!!
热门文章
- php脚本定时更新商品列表
- Jenkins报错Error fetching remote repo 'origin'真正解决办法
- Netty学习笔记(五) 使用Netty构建静态网页服务器
- Python正则表达式初识(九)
- 基于angular5+ionic3仿照网易云音乐客户端
- Junit3.8源码--核心类
- OpenWares | Open Source and Free Matters » 为rm命令增加回收站功能
- Windows Azure奇趣应用之Swingify
- 哪里是我们最好的避风港?
- 用pycharm搭建odoo 12, 11,10 开发调试环境