策略一:建立IP池
内容比较复杂我就不在此一一细讲如何建立IP池
优点:
爬取速度很快,IP封了之后换一个新的就好
缺点:
设计程序很复杂
策略二:使用延时爬取
优点:
可以一直爬取(挂着就行)
成本低,
上手比较简单
缺点:
爬取速度慢
接下来是理论部分:
什么是封IP?
当我们快乐的爬取网站数据的时候,爬着爬着就啥也爬取不下来了,我们检查requests,发现根本请求不了网站的源码,这个时候,很有可能是我们上网的IP被网站给封了。我们频繁的访问网站被检测为有可能是恶意攻击,网站就把我们上网的IP封锁了,所有通过这个IP上网的设备,都不能访问这个网站。
为什么会被检测到?
当我们的程序连续地访问网站时,做出了人类无法做出的一系列的举动,就很容易被判断为程序。如:
1、访问速度太快,马不停蹄的打开了很多个网站链接
2、访问太规律,比如规律的每秒下载一次网站信息,人类根本无法这么规律。
3、访问太流畅,刚打开一个网址,马上就下好了自己需要的图片,且每次都是如此
延时防被封法:
需要引入模块
import time
import random
需使用函数
x = random.uniform(1, 3)
time.sleep(x)
原理:
random.uniform(x,y)是随机从x(包括x)到y(不包括y)的随机数,这个函数可以使得我们代码的访问显得更像一个人类(因为人类的点击所花的时间间隔是随机的)
time.sleep(x)则是让整个代码停止x秒,这样,就是实现了代码的随机时间休息,更显得像一个真人在访问网站,不容易被检测。
版权归原作者 ndyysheep 所有, 如有侵权,请联系我们删除。