Max retries exceeded with url

Max retries exceeded with url

error1:NewConnectionError(’<urllib3.connection.VerifiedHTTPSConnection object at 0x00000000038F2B00>: Failed to establish a new connection:[WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。’,))解决办法:session.keep_alive=Falseerror2:python hostname doesn’t match either of facebookXXXXX解决办法:

转载 : 简书链接

1、多方查阅后发现了解决问题的原因:http连接太多没有关闭导致的。
解决办法:1、增加重试连接次数
requests.adapters.DEFAULT_RETRIES = 5

2、关闭多余的连接
requests使用了urllib3库,默认的http connection是keep-alive的,requests设置False关闭。

requests.post(“http://…”, headers={‘Connection’:‘close’})
或者
s = requests.session()
s.keep_alive =False

3、只用session进行操作。即只创建一个连接,并设置最大连接数或者重试次数。

import requests 
from requests.adapters import HTTPAdapter
from requests.packages.urllib3.util.retry import Retry
session = requests.Session()
retry = Retry(connect=3, backoff_factor=0.5)
adapter = HTTPAdapter(max_retries=retry)
session.mount('http://', adapter)
session.mount('https://', adapter)
session.get(url)

import  requests  
from  requests.adapters  import  HTTPAdapter
from  requests.packages.urllib3.util.retry  import  Retry 
 s = requests.Session() 
 retry = Retry(connect =5, backoff_factor =1) 
 adapter = HTTPAdapter(max_retries = retry) 
 s.mount('http://', adapter) 
 s.keep_alive =False
res = s.post(self.conn.host +'/sign-in', data = json.dumps({'name':"XXX",'pwd':"XXX"})) 
 response = res.json()

但是在starkoverflow上有人给出了这样的解释。

4.安装 py
pip install -U pyopenssl

5、设定固定的睡眠时间在发送请求之间https://github.com/requests/requests/issues/4246#eventhttps://stackoverflow.com/questions/23013220/max-retries-exceeded-with-url
在爬取boss直聘时出现这种错误,总结如下: 1.http连接太多没有关闭导致的,解决方法:

import requests
requests.adapters.DEFAULT_RETRIES =5    # 增加重连次数
s = requests.session()
s.keep_alive = False   # 关闭多余连接
s.get(url)# 你需要的网址

2.访问次数频繁,被禁止访问,解决方法:使用代理

import requests
s = requests.session()
url ="https://mail.163.com/"
s.proxies= {"https":"47.100.104.247:8080","http":"36.248.10.47:8080", }
s.headers= header
s.get(url)

使用代理时需注意:1.代理分为http和https两种,不能用混,如果把http的代理用作https也是会报上面的错误;2.上面的代理以字典格式传入,
例如上面的例子,是“47.100.104.247:8080”这种格式,也可以是“https://47.100.104.247:8080”这种格式;3.如果代理不可用一样会报上面的错误。以下方法判断代理是否可用:

import requests
s = requests.session()
url ="https://mail.163.com/"
s.keep_alive = False
s.proxies= {"https":"47.100.104.247:8080","http":"36.248.10.47:8080", }
s.headers= header
r = s.get(url)
print(r.status_code)    # 如果代理可用则正常访问,不可用报以上错误

升级
pip install --upgrade requests

如果同一ip访问次数过多也会封ip,这里就要用代理了proxies,python很简单,直接在请求中带上proxies参数就行,

r = requests.get(url, headers=headers,cookies=cookies,proxies = proxies)

下半部分

ProxyError: HTTPSConnectionPool(host=‘xingyun.map.qq.com’, port=443): Max retries exceeded with url: /api/getXingyunPoints (Caused by ProxyError(‘Cannot connect to proxy.’, NewConnectionError(’<requests.packages.urllib3.connection.VerifiedHTTPSConnection object at 0x000001F8DDC68278>: Failed to establish a new connection: [WinError 10061] 由于目标计算机积极拒绝,无法连接。’,)))

一开始还以为是封了ip啥的,然后就去测试其他的爬虫,爬其他网站看看,结果发现所有网站都是这样,都无法爬虫,那说明不是封IP的问题。

解决这个问题有很多种方法:
一:time.sleep() 因为错误提示里提到了访问过于频繁,超过最大尝试次数,所以每次爬完之后要让程序停一段时间,这种方法可以尝试。

二:ProxyError的意思是代理错误,一般来说只有翻墙才会用到代理,可能是你某个软件让电脑每次都默认打开了代理,所以你只需要把代理关闭即可。

在这里插入图片描述

三、是网络不稳定造成的,这时候你重启下或者换一个网络环境就好了,比如把宽带连接改为手机热点连接,一般问题即可解决。

四:以上都不行的话再打开你的浏览器设置,如下操作。

在这里插入图片描述

一般来说,经过这四个步骤,问题即可解决。

当然还有一张情况是:

urllib.error.URLError: <urlopen error [WinError 10061] 由于目标计算机积极拒绝,无法连接。>
因为之前用过fiddler,今天运行程序时没有打开fiddler,所以配置的代理失效了,返回这样的错误。这个问题是因为代理设置失效,换一个代理或者取消设置代理即可。

原文:https://blog.csdn.net/qq_32231883/article/details/88962790

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值