爬虫——Python爬虫遇到ip被封或Max retries exceeded问题

(1)IP被封
解决方法:User Agent+IP代理
具体方法:
User Agent减少IP被封次数,原理是模仿人的点击访问。
具体做法:加上headers={'user-agent':'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.133 Safari/569.36'}
这里使用的是模仿谷歌浏览器的,其他浏览器可以参见这篇文章Python3网络爬虫(四):使用User Agent和代理IP隐藏身份,其实没有什么区别,都只是个模仿过程。
然后在requests.get(url)这里,加上header的属性,变成requests.get(url,headers = headers)
IP代理解决IP被封情况,原理是减少机器识别出某个ip在短时间内经常访问某个网页
具体做法:找到免费或者收费的代理商,使用它们的接口获得ip地址,然后放在proxies = {}中,在requests.get(url,headers = headers)这里加上proxies属性,变成requests.get(url,headers = headers,proxies=proxies)
注意事项:
网上免费的ip代理中的ip基本都不可用,100多个里面顶多2个可以用,极其浪费时间。
一些收费的ip代理也出现ip不可用的情况,可以在购买之前先试用,看看效果如何再购买。
如果爬的是国外的网站,也有一些服务商提供国外ip代理,但是如果需要先使用VPN再使用IP代理的话,则ip代理没有用。
(2)Max retries exceeded(443)问题
解决方法:sleep+retries或session或IP代理
具体方法:
session减少打开的http连接的数量,在requests.get(url, headers=headers)前,添加如下代码

s = requests.session()
s.keep_alive = False

sleep+retries增加连接上的可能,

time.sleep(5)
requests.DEFAULT_RETRIES = 5

ip代理,换个ip,继续爬

猜你喜欢

转载自blog.csdn.net/zeshen123/article/details/109639084