最为经典的反爬虫策略当属“验证码”了。因为验证码是图片,用户登录时只需输入一次便可登录成功,而我们程序抓取数据过程中,需要不断的登录,比如我们需要抓取1000个用户的个人信息,则需要填1000次验证码,而手动输入验证码是不现实的,所以验证码的出现曾经难倒了很多网络爬虫工程师。
解决方法:
1. 分析网站验证码机制,从网站后台或者前端获取验证码(文本形式),该方法只适用于少量网站,因为一般验证码我们很难拿到。
2. 利用图像识别技术,识别验证码文本。
3. 往往一些网站不只有pc端,还有手机端网站,很有可能手机端是不包含验证码的。所以不妨试试手机端网站,也许会有意外收获。
另外一种比较恶心的反爬虫策略当属封ip和封账号了。本人初期曾经用一台机器抓取新浪微博,导致短时间内账号被封,IP被封,所以遇到类似问题一定要多加小心。
解决方法:
1. 最简单的解决办法:限制程序抓取频率,每隔几秒登录一次(如果对抓取数量没有要求,则可以采用这种方法,如果想抓取大量数据,还不得抓取到猴年马月啊)。
2. 既然封账号封IP,那我就用多个账号、多台机器抓取呗,既解决了反爬虫问题,也相当于做了分流处理,降低单台机器带宽压力。
3. 事实证明,有些网站即使我们采用了1、2种方法,还是会被封,这种情况下我们只能使用兔子IP代理了,用这些代理去抓取我们想要的数据。到此为止,基本上封账号、封IP的问题就可以解决了。