1. ホーム

python3エラー 最大再試行回数を超えている url 解決策

2022-02-22 19:17:42

をクロールするとこのエラーが発生します。

ConnectionError: HTTPConnectionPool(host='xxx.xx.xxx', port=xxxx): 最大再試行回数を超えました。/api/v1/ login/ (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7f7c98a867d0>'-'-';): 新しい接続の確立に失敗しました。[Errno 111] 接続が拒否されました',))

そこで、Webで多くの記事を検索し、以下のようにまとめました。
1.解決策に起因する、閉じていないhttp接続が多すぎる。

import requests
requests.adapters.DEFAULT_RETRIES = 5 # increase the number of reconnections
s = requests.session()
s.keep_alive = False # Close redundant connections
s.get(url) # The URL you need


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)


プロキシのURLを検索します。 http://ip.zdaye.com/shanghai_ip.html#Free
プロキシを使用する場合の注意点
1. プロキシは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 # If the proxy is available then access is normal, if not report the above error