本文主要描写了使用Redis和Flask维护一个动态Cookies池的相关过程。
(1)为什么要用Cookies池?
- 有些网站需要登录才能爬取,例如新浪微博
- 爬取过程中如果频率过高会导致封号
- 需要维护多个账号的Cookies池实现大规模爬取
(2)Cookies池的要求
- 自动登录更新
- 定时验证筛选
- 提供外部接口
(3)Cookies池架构
Cookies池的架构采用下图所示的形式:
首先,需要有一个账号队列,把一些账号密码存到数据库里,生成器即程序从队列里面拿出账号密码,自动地进行登录,并获取登录的Cookies,然后放到Cookies队列里。定时检测器从Cookies队列里定期地随机选出一些Cookies,并用这些Cookies请求网页,如果请求成功就放回队列,否则从队列里剔除,这样就能做到实时更新,保证Cookies队列里的Cookies都是可用的。此外,还需要提供一个API接口,使外部程序能够从队列里获取到Cookies。
(4)Cookies池的实现
项目参考来源: