分布式爬虫爬取知乎用户—redis篇

使用redis作为缓存存储爬取下来的关注用户列表,使用redis set集合还有一个好处是可以自动去重。

我打算用五个集合,分别是waiting_set(等待爬取)、success_info(信息爬取成功)、failed_info(信息爬取失败)、success_list(关注列表爬取成功)、failed_list(关注列表爬取失败)、

首先需要用python连接redis(连接前需将redis服务开启)

import redis

r = redis.Redis('localhost','6379','db0')


然后可以使用r.sadd('key','value')将urlToken添加到set集合中

使用s.spop('key')可以从集合中随机取出一个urlToken,爬取其用户信息,如果成功将其放入success_info集合,将用户信息存入mongdb数据库,否则放入failed_info

使用另外一个进程爬取其关注者列表,如果成功放入success_list集合否则放入failed_list集合。

注意:

redis默认开启保护模式,连接redis 时只能通过本地localhost (127.0.0.1)这个来链接,而不能用网络ip(192.168..)这个链接,如果用网络ip 链接会报以下错误。

"DENIED Redis is running in protected mode"

解决方法如下:

修改配置文件 redis.conf。

1. 打开配置文件把下面对应的注释掉

# bind 127.0.0.1

2. 关闭保护模式

protected-mode no

3. Redis默认不是以守护进程的方式运行,可以通过该配置项修改,使用yes启用守护进程,设置为no

daemonize no

然后使用配置文件启动redis即可成功远程访问

$ redis-server redis.conf

参考文章:   python操纵redis set集合

你可能感兴趣的:(分布式爬虫爬取知乎用户—redis篇)