示例代码
爬虫.py
import scrapy
from GetUrl.items import GeturlItem
class TestSpider(scrapy.Spider):
name = 'test'
#allowed_domains = ['www.baidu.com']
start_urls = ['http://www.baidu.com/']
def parse(self, response):
item = GeturlItem()
item['CityURLs']=['ssss','dd']
yield item
setting.py
REDIS_HOST = 'localhost'
REDIS_PORT = 6379
REDIS_DB_INDEX =1
REDIS_PASSWORD =""
pipeline.py
mport pymysql
import redis
class RedisPipeline(object):
def open_spider(self, spider):
# 第一个参数是settings.py里的属性,第二个参数是获取不到值的时候的替代值
host = spider.settings.get("REDIS_HOST", "127.0.0.1")
port = spider.settings.get("REDIS_PORT", 6379)
db_index = spider.settings.get("REDIS_DB_INDEX", 1)
db_psd = spider.settings.get("REDIS_PASSWORD", "")
# 连接数据库
self.db_conn = redis.StrictRedis(host=host, port=port, db=db_index, password=db_psd)
def process_item(self, item, spider):
print("看看管道是什么?")
for i in range(len(item['CityURLs'])):
print(item['CityURLs'][i].encode("utf-8"))
self.db_conn.lpush("url", item['CityURLs'][i].encode("utf-8"))
print("*"*100)
return item
def close_spider(self, spider):
# 关闭连接
self.db_conn.connection_pool.disconnect()
操作Redis,使用StrictRedis对象
通过init创建对象,指定参数host、port与指定的服务器和端⼝连接,host默认为localhost,port默认为6379,db默认为0
根据不同的类型,拥有不同的实例有不同的方法可调,与之前学的redis命令对应
(1)String类型
set:
#设置键值:
set key value
#设置键为name值为xiaoming的数据
set name xiaoming
setex:
#设置键值及过期时间,以秒为单位
setex key seconds value
#设置键为aa值为aa过期时间为3秒的数据
setex aa 3 aa
mset:
#设置多个键值
mset key1 value1 key2 value2 ...
#设置键为a1值为python、键为a2值为java、键为a3值为c
mset a1 python a2 java a3 c++
append:
#追加值
append key value
#向键为a1中追加值abc
append a1 abc
get:
#获取:根据键获取值,如果不存在此键则返回nil
get key
#获取键name的值
get name
mget:
#获取多个键获取多个值
mget key1 key2 ...
#获取键a1、a2、a3的值
mget a1 a2 a3
(2)键命令
key:
#查找键,参数支持正则表达式
keys pattern
#查看所有键
keys *
#查看名称中包含a的键
keys a*
exists:
#判断键是否存在,如果存在返回1,不存在返回0
exists key1
#判断键a1是否存在
exists a1
type:
#查看键对应的value的类型
type key
#查看键a1的值类型为redis⽀持的五种类型中的⼀种
type a1
delete:
#删除键及对应的值
del key1 key2...
#删除键a1、a2
del a2 a3
expire:
#设置过期时间,以秒为单位
#如果没有指定过期时间则⼀直存在,直到使⽤DEL移除
expire key seconds
#设置键a1的过期时间为3秒
expire a1 3
ttl:
#查看有效时间,以秒为单位
ttl key
#查看键a1的有效时间
ttl a1
(3)Hash类型
hset:
#设置单个属性
hset key field value
#设置键 user的属性name为xiaoming
hset user name xiaoming
hmset:
#设置多个属性
hmset key field1 value1 field2 value2 ...
#设置键u2的属性name为itcast、属性age为11
hmset u2 name itcast age 11
hkeys:
#获取指定的键的所有的属性
hkeys key
#获取键a1的所有属性
hkeys a1
hget:
#获取多个属性的值
hmget key field1 field2 ...
#获取键u2属性name的值
hget u2 name
hmget:
#获取多个属性的值
hmget key field1 field2 ...
#获取键u2属性name、age的值
hmget u2 name age
hvals:
#获取所有属性的值
hvals key
#获取键u2所有属性的值
hvals u2
hdel
#删除整个hash键及值,使用del命令
#删除属性,属性对应的值会被一起删除
hdel key field1 field2 ...
#删除键u2的属性age
hdel u2 age
(4)List类型
lpush
#在左侧插入数据
lpush key value1 value2 ...
#从键为a1的列表左侧加⼊数据a 、 b 、c
lpush a1 a b c
rpush
#在右侧插入数据
rpush key value1 value2 ...
#从键为a1的列表右侧加⼊数据0、1
rpush a1 0 1
linsert
#在指定元素的前或后插入新元素
linsert key before或after 现有元素 新元素
#在键为a1的列表中元素b前加⼊3
linsert a1 before b 3
lrange
#start、stop为元素的下标索引
#索引从左侧开始,第⼀个元素为0
#索引可以是负数,表示从尾部开始计数,如-1表示最后⼀个元素
#返回列表里指定范围内的元素
lrange key start stop
#获取键为a1的列表所有元素
lrange a1 0 -1
lset
#设置指定索引位置的元素值
lset key index value
#修改键为a1的列表中下标为1的元素值为z
lset a 1 z
lrem
#列表中前count次出现的值为value的元素移除
#count > 0: 从头往尾移除
#count < 0: 从尾往头移除
#count = 0: 移除所有
#删除指定元素
lrem key count value
#向列表a2中加⼊元素a、b、a、b、a、b
lpush a2 a b a b a b
#从a2列表右侧开始删除2个b
lrem a2 -2 b
ltrim
#截取保留的元素
ltrim key start stop
# 只保留前三个元素(0-2)
ltrim name 0 2
(5)集合类型
set类型
sadd:
#添加元素
sadd key member1 member2 ...
#向键a3的集合中添加元素zhangsan、lisi、wangwu
sadd a3 zhangsan sili wangwu
smembers
#返回所有的元素
smembers key
#获取键a3的集合中所有元素
smembers a3
srem
#删除指定元素
srem key
#删除键a3的集合中元素wangwu
srem a3 wangwu
(6)字典类型(有序集合)
zadd
#添加
zadd key score1 member1 score2 member2 ...
#向键a4的集合中添加元素lisi、wangwu、zhaoliu、zhangsan,权重分别为4、5、6、3
zadd a4 4 lisi 5 wangwu 6 zhaoliu 3 zhangsan
zrange
#返回指定范围内的元素(-1表示最后一个元素)
#start、stop为元素的下标索引
#索引从左侧开始,第一个元素为0
#索引可以是负数,表示从尾部开始计数,如-1表示最后一个元素
zrange key start stop
#获取键a4的集合中所有元素
zrange a4 0 -1
zrangebyscore
#返回score值在min和max之间的成员
zrangebyscore key min max
#获取键a4的集合中权限值在5和6之间的成员
zrangebyscore a4 5 6
zscore
#返回成员member的score值
zscore key member
#获取键a4的集合中元素zhangsan的权重
zscore a4 zhangsan
zrem
#删除指定元素
zrem key member1 member2 ...
#删除集合a4中元素zhangsan
zrem a4 zhangsan
zremrangebyscore
#删除集合a4中元素zhangsan
zrem a4 zhangsan
#删除权重在指定范围的元素
zremrangebyscore key min max
#删除集合a4中权限在5、6之间的元素
zremrangebyscore a4 5 6