问题描述
爬虫中常需要睡眠防止爬取过快被封IP,人点击的时间是相对稳定,并在一定范围内波动
解决方案
使用正态分布模拟范围波动的时间,更真实
正态分布是一种连续型概率分布,在自然界中很常见,如身高、寿命、考试成绩等,属于各种因素相加对结果的影响。
若随机变量 X X X服从一个数学期望为 μ \mu μ,方差为 σ 2 \sigma ^2 σ2的正态分布,记为 N ( μ , σ 2 ) N\left( \mu ,\sigma ^2 \right) N(μ,σ2)
import time
import random
def random_sleep(mu=1, sigma=0.4):
'''正态分布随机睡眠
:param mu: 平均值
:param sigma: 标准差,决定波动范围
'''
secs = random.normalvariate(mu, sigma)
if secs <= 0:
secs = mu # 太小则重置为平均值
time.sleep(secs)
μ = 1 \mu =1 μ=1, σ = 0.4 \sigma =0.4 σ=0.4
0.7064196787554182
1.2534987046066317
0.9947152762545793
0.6406594468142128
1.1230730100881552
1.3657589217334918
0.352417427623824
1.060297589921571
1.16466426576179
1.6256129468167888