当前位置:   article > 正文

Max retries exceeded with url

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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

但是在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)# 你需要的网址
  • 1
  • 2
  • 3
  • 4
  • 5

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
  • 2
  • 3
  • 4
  • 5
  • 6

使用代理时需注意: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)    # 如果代理可用则正常访问,不可用报以上错误
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

升级
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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/175717
推荐阅读
相关标签
  

闽ICP备14008679号