如何节省请求次数,提高爬取效率

我有个需求就是爬取一个接口的数据,此接口只接收一个参数ID,此ID的规则如下

202102271024384610

我分隔说下含义

2021年02月27日10点24分38秒  +  4610申请人身份证后四位

我也研究过身份证后四位的编码规则,基本就是10*10*10*11种组合

前面时间的话是一天24*60*60种组合,按实际情况去掉凌晨的8个小时,实际一天也就200-300条数据

我要在16*60*60*10*10*10*11里找这200-300条数据,如何能提高成功率呢?是不是只能穷举了.....

prefix = '2021031720'
for minute in range(0, 1):
    for second in range(0, 60):
        for no in range(0, 100):
            for last in range(0, 11):
                if last == 10:
                    last = 'X'
                indexId = prefix + str(minute).zfill(2) + str(second).zfill(2) + str(no).zfill(3) + str(last)
                login_data = {'indexId': indexId}
                r = s.post('http://xx.com', login_data)
                result = json.loads(r.text)
                print("正在抓取:"+indexId)
                if (result.get('status') == 0):
                    print("抓到一个:"+indexId)

 

补充下背景:

1.男女性比例差不太多,身份证奇偶位算一样概率

2.地区主要是冀鲁豫地区、年龄主要是22-40岁

3.申请时间主要是白天,晚上居多,凌晨几乎没有

目标的200-300条数据本身有什么规律或者特征吗?比如男性较多、女性较多?之类的。还是完全随机的。

给你一个随机构造id的式子:

from datetime import datetime,timedelta

import random

#id=''.join([str(random.choice(range(10))) for _ in range(3)])+str(random.choice(list(range(10))+['X']))

#print(id)

t = [(datetime.fromisoformat('2021-03-05 08:00:00')+timedelta(seconds=i)).strftime('%Y%m%d%H%M%S') +

     ''.join([str(random.choice(range(10))) for _ in range(3)])+str(random.choice(list(range(10))+['X'])) for i in range(16*60*60)]

print(t)

您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~