欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-04-07 18:07:08
(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网络爬虫(四):使用Us...

(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,继续爬

本文地址:https://blog.csdn.net/zeshen123/article/details/109639084

相关标签: 机器学习 python