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()
需要新建数据库以及表,字段
scrapy基础知识之 处理Redis里的数据:的更多相关文章
- 0.Python 爬虫之Scrapy入门实践指南(Scrapy基础知识)
目录 0.0.Scrapy基础 0.1.Scrapy 框架图 0.2.Scrapy主要包括了以下组件: 0.3.Scrapy简单示例如下: 0.4.Scrapy运行流程如下: 0.5.还有什么? 0. ...
- 第三百节,python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型
python操作redis缓存-其他常用操作,用于操作redis里的数据name,不论什么数据类型 delete(*names)根据删除redis中的任意数据类型 #!/usr/bin/env pyt ...
- scrapy基础知识之 RedisCrawlSpider:
这个RedisCrawlSpider类爬虫继承了RedisCrawlSpider,能够支持分布式的抓取.因为采用的是crawlSpider,所以需要遵守Rule规则,以及callback不能写pars ...
- scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:
pipelines.py class xxPipeline(object): def process_item(self, item, spider): con=pymysql.connect(hos ...
- 大数据基础知识问答----spark篇,大数据生态圈
Spark相关知识点 1.Spark基础知识 1.Spark是什么? UCBerkeley AMPlab所开源的类HadoopMapReduce的通用的并行计算框架 dfsSpark基于mapredu ...
- 善待Redis里的数据--Unable to validate object
又是一篇关于姿势的文章,为什么是”又”呢?因为上个星期刚写完一篇关于Apache Commons Pool的正确使用姿势的文章,点击此处阅读. Redis为我们提供便利的同时,我们也要善待里面的数据 ...
- scrapy基础知识之 Scrapy 和 scrapy-redis的区别:
Scrapy 和 scrapy-redis的区别 Scrapy 是一个通用的爬虫框架,但是不支持分布式,Scrapy-redis是为了更方便地实现Scrapy分布式爬取,而提供了一些以redis为基础 ...
- scrapy基础知识之 CrawlSpiders爬取lagou招聘保存在mysql(分布式):
items.py import scrapy class LagouItem(scrapy.Item): # define the fields for your item here like: # ...
- scrapy基础知识之 scrapy 三种模拟登录策略:
注意:模拟登陆时,必须保证settings.py里的 COOKIES_ENABLED (Cookies中间件) 处于开启状态 COOKIES_ENABLED = True或 # COOKIES_ENA ...
随机推荐
- wpf的webbrowser与javascript交互
JS调用C#代码 HTML代码: <button onclick="window.external.Test('called from script code')"> ...
- Objective
1.NSSet 1.是一个无序的,管理多个对象的集合类,最大特点 是集合中不允许出现重复对象,和数学上的集合含义是一 样的 2.除了无序.不许重复之外,其它功能和NSArray是一样的 2.NSArr ...
- mysql的命令行安装,忘记密码,密码重置问题
1.下载,安装msi 2.在MYSQL安装目录下,新建data目录 3.进入MYSQL的安装目录下,新建一个默认配置文件my.ini [mysql] # 设置mysql客户端默认字符集 default ...
- SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication
原文:SqlServer 无法为可更新的订阅设置发布服务器登录名 sp_link_publication 没有截图: 创建可更新订阅,正常创建了发布,在订阅端创建订阅,最后一步提示完成,却出现了警告: ...
- SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅!
原文:SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅! 在可更新订阅的同步复制中,有行筛选的项目表,移除的时候会提示重新初始化所有的快照并且应用此快照,这将导致所有 ...
- 解决iconv函数无法转换某些中文的问题
原文: 解决iconv函数无法转换某些中文的问题 请先看以下代码,这个页面是GB2312编码的: $str = '陶喆';echo 'gb2312-'.$str;echo '<br />' ...
- C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
原文:C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入 Win32.cs /* * * FileCreate By Bluefire * Used To Import WindowsApi ...
- 百度网盘web端项目总结
项目背景 网盘作为一个在线备份存储,共享文件的工具类产品,给人们的工作和生活带来了很大的帮助和便利.百度网盘是目前国内使用量最大的网盘产品,至今发展已有4年,总用户数超4亿,为了让用户有着更好的使用体 ...
- LVS-DR模式部署流程
情景一 一.环境介绍 1)RIP.VIP.DIP为同一物理网络 2)LVS Hostname:lvs eth0:DIP-192.168.3.31 eth0:0:VIP-192.168.3.10 3)R ...
- 关于web系统整体优化提速总结
关于web系统整体优化提速总结 一.背景 随着公司业务的拓展,随之而来就是各种系统横向和纵向的增加,PV.UV也都随之增加,原有的系统架构和模式慢慢遇上了瓶颈,需要逐步的对系统从整体上进行改造升级,通 ...