使用Python requests库发起请求时如何避免大量请求被拒绝
你遇到的是网站的反爬频率限制,目的是避免短时间大量请求占用服务器资源,可通过以下方法解决:
- 添加请求间隔:每次请求结束后使用
time.sleep()插入等待时间,建议单次等待3-10秒,根据请求返回的情况动态调整,避免短时间内高密度请求触发限制。 - 模拟真实浏览器请求头:默认的requests请求会携带标识爬虫的User-Agent字段,很容易被服务器识别。你可以在请求中添加headers参数,替换为你本地浏览器的User-Agent值,必要时还可以补充Referer、Accept等字段,进一步降低被识别的概率。
- 增加错误重试和指数退避逻辑:当收到请求被拒绝的返回时,不要立刻重试,可设置阶梯式的等待时长,比如第一次重试等待5秒,第二次等待10秒,最多重试3次后跳过本次请求,避免频繁重试导致IP被长时间封禁。
- 优化查询逻辑减少总请求量:ISC平台本身支持较大范围的单次查询,你可以尝试把多个小范围的查询参数合并为一次大查询,从根源上减少总请求次数,自然降低触发限制的概率。
- 使用会话保持连接:用
requests.Session()创建会话对象发起请求,会自动保存请求过程中生成的cookie,和普通用户浏览器访问的行为逻辑更一致,也能减少每次请求的握手开销。
可参考调整后的代码:
# 导入依赖包 import requests import time # 配置请求头,User-Agent替换为你自己浏览器的对应值 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36", "Referer": "http://www.isc.ac.uk/iscbulletin/search/arrivals/" } # 创建会话对象 session = requests.Session() # 最大重试次数 max_retry = 3 # 普通请求间隔(秒) interval = 5 url = "http://www.isc.ac.uk/cgi-bin/web-db-v4?iscreview=on&out_format=CSV&ttime=on&ttres=on&tdef=on&s=on&phaselist=&stnsearch=STN&sta_list=CLC&stn_ctr_lat=&stn_ctr_lon=&stn_radius=&max_stn_dist_units=deg&stn_top_lat=&stn_bot_lat=&stn_left_lon=&stn_right_lon=&stn_srn=&stn_grn=&bot_lat=&top_lat=&left_lon=&right_lon=&ctr_lat=&ctr_lon=&radius=&max_dist_units=deg&searchshape=GLOBAL&srn=&grn=&start_year=2009&start_month=7&start_day=01&start_time=00%3A00%3A00&end_year=2019&end_month=8&end_day=01&end_time=00%3A00%3A00&min_dep=&max_dep=&min_mag=6.0&max_mag=6.9&req_mag_type=Any&req_mag_agcy=Any&include_links=on&request=STNARRIVALS" for i in range(max_retry): try: resp = session.get(url, headers=headers, timeout=60) # 检查是否触发限流 if "抱歉,您的请求目前无法被处理,请几分钟后再试" in resp.text: print(f"第{i+1}次请求被限流,等待{2**i * 10}秒后重试") time.sleep(2**i * 10) continue # 请求成功处理数据 print(resp.text) break except Exception as e: print(f"请求出错:{e},等待{interval}秒重试") time.sleep(interval) # 每次请求后等待固定间隔,避免连续请求 time.sleep(interval)
注意ISC属于公益类学术资源平台,爬取时尽量控制请求频率,避免占用过多公共服务器资源,也能进一步降低被封禁的概率。
内容的提问来源于stack exchange,提问作者Hao Mai
相关产品推荐
相关产品推荐

