这篇文章将为大家详细讲解有关python爬虫中怎么处理429错误,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
创新互联公司是一家专业提供额济纳企业网站建设,专注与网站设计制作、成都网站制作、H5高端网站建设、小程序制作等业务。10年已为额济纳众多企业、政府机构等服务。创新互联专业网络公司优惠进行中。
1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、Python功能强大,拥有的模块众多,基本能够实现所有的常见功能。
我们在使用python爬虫爬取页面的过程中爬到某个时刻异常报错,如果是被反爬抓到了,就是403错误,那有的时候会出现429错误是什么意思呢?429错误是指在爬虫的过程中同一时间访问频率过高,因此控制访问的速度就可以了。本文介绍python爬虫中处理429错误的方法及具体代码。
什么是429错误?
429是Too Many Requests,http代码429表示访问过快。意思就是同一时间访问频率过高,大多是因为程序并发太高超过代理那边给的帐号的并发限制了。
如何处理?
控制访问的速度就可以了。
有些服务器会在返回的头部中添加"Retry-After",这是通知多久之后重试,获取这个值,然后sleep就可以了。
python爬虫中处理429错误?
捕获错误
try: ..... except aiohttp.ClientResponseError as e: # 响应错误 if status== 429: retryAfter="Retry-After" headers=e.headers sec=getHeader(headers, retryAfter) if len(sec)>0: sec=int(sec) print(status, "请求过快,服务器要求待",sec , url ) time.sleep(sec) # If the rate limit is renewed in a minute, put 60 seconds, and so on. else: print(status, "服务器拒绝了请求,表示请求过快。取消重试,请稍后再试!", url)
def getHeader(headers, key): key_lower=key.lower() headers_lower = {k.lower():v for k,v in headers.items()} if (key_lower in headers_lower) : return headers_lower[key_lower] else: return ''
关于“python爬虫中怎么处理429错误”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。