首先,需要有一个账号队列,把一些账号密码存到数据库里,生成器即程序从队列里面拿出账号密码,自动地进行登录,并获取登录的Cookies,然后放到Cookies队列里。定时检测器从Cookies队列里定期地随机选出一些Cookies,并用这些Cookies请求网页,如果请求成功就放回队列,否则从队列里剔除,这样就能做到实时更新,保证Cookies队列里的Cookies都是可用的。此外,还需要提供一个API接口,使外部程序能够从队列里获取到Cookies。
源码可以参考:
https://github.com/Germey/CookiesPool
https://github.com/Python3WebSpider/CookiesPool
我们从github上下载这个项目并且在pycharm中打开。
首先需要安装必要的依赖:
pip3 install -r requirements.txt
然后需要在config.py文件中配置数据库:
这个需要根据实际情况配置了。
接下来要将微博小号导入到数据库中。
微博小号可以到网站上购买(现在某宝似乎搜不到了,可以用百度找,3、4毛钱一个小号,安全起见可以先购买少量进行尝试)。
运行importer.py后,将账号密码批量复制到命令行中,回车即可实现导入数据库:
之后可以在Redis中看到对应的数据:
因为使用小号登录时,会需要输入验证码,为了效率,我们需要通过“云打码”这个平台的协助来实现自动打码,网址:http://www.yundama.com/。注册之后,将账号密码信息配置到config.py:
并且可以在账号中充值少量的金额,作为打码的花费(一张新浪的验证码花费为1分钱多一点儿)。
config.py文件中,定义了一些参数,下方有三个进程开关:
当需要使用某个进程时,把参数设置为True即可。
如果以上步骤都准备好了,我们可以同时把所有进程的开关都打开,然后运行run.py:
可以看到生成器开始工作,如果数据库中的账号没有cookies信息,那么就会取出这个账号进行登录,登录成功后的cookie会保存下来,同时验证器会对已经保存的cookies进行验证。
全部生成完毕后效果如下:
所有账号的cookies都已经生成并保存了。
这个cookies池的实现,为之后大规模的爬取做好了准备。
需要注意的是: