分布式爬虫爬取知乎用户—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集合

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 很早就有采集知乎用户数据的想法,要实现这个想法,需要写一个网络爬虫(Web Spider)。因为在学习 py...
    呓语_yiyu阅读 11,697评论 12 148
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,493评论 19 139
  • NOSQL类型简介键值对:会使用到一个哈希表,表中有一个特定的键和一个指针指向特定的数据,如redis,volde...
    MicoCube阅读 9,490评论 2 27
  • 昨天晚上被肿痛的牙疼醒了两次 早上想去买药也没有地方 只买了一杯牛奶燕麦 却连燕麦都咬不成 难受到爆炸 要是你在就...
    我是一颗鲟鱼丸阅读 1,170评论 1 1
  • 练了80分钟,19:40~21:00 4指力度训练 B大调音阶、琶音、和弦,g#小调音阶、琶音、和弦 《高师1》P...
    i_orange阅读 1,241评论 0 0