解決された requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='123.96.1.95', port=30090): 最大再試行

已解决requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='123.96.1.95', port=30090): URL で最大再試行回数を超えました: http://cdict.qq.pinyin.cn/list?cate_id=461&sort1_id=436&sort2_id=461&page =4 (ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000204934C49A0>, 'Connection to 123.96.1.95 timed out. (connect timeout=20)') が原因))





エラーコード

ファングループの小さな友人がrequests.get、ウェブページのソースコードをクロールするときにエラーが発生したと報告しました(その時、彼は心の中で多くの寒さを感じ、私に助けを求めに来て、それを解決するのに成功しました.ところで、このバグにもっと遭遇するのに役立つことを願っています. 友人はそれを解決しません), エラーコードは次のとおりです:

def get_url(url):
    """发送请求获取响应返回网页源码"""
    # 如果访问失败无限循环访问五次
    try:
        r = requests.get(url, headers=headers)
    except:
        time.sleep(120)
        for i in range(5):
            r = requests.get(url, headers=headers, timeout=20)
            if r.status_code == '200':
                break
            time.sleep(300)
    html_str = r.content.decode('utf8')

    return html_str

エラー メッセージは次のとおりです。

requests.exceptions.ConnectTimeout: HTTPConnectionPool(host='123.96.1.95', port=30090): URL で最大再試行回数を超えました: http://cdict.qq.pinyin.cn/list?cate_id=461&sort1_id=436&sort2_id=461&page=4 (ConnectTimeoutError(<urllib3.connection.HTTPConnection object at 0x00000204934C49A0>, 'Connection to 123.96.1.95 timed out. (connect timeout=20)') が原因))



エラー翻訳


エラー メッセージの翻訳:

リクエスト、例外。接続タイムアウト: http 接続プール (ホスト = '123.96.1.95'、ポート = 30090): URL の最大再試行回数を超えました: http://cdict.qq.pinyin.cn/list?cate_id=461&sort1_id=436&sort2_id=461&page= 4 (接続タイムアウト エラー (<urllib3.connectionpool.HTTPConnectionPool object> at 0x00000204934C49A0, 'connection to 123.96.1.95 timed out (connection timeout=20')) が原因



エラーの理由


接続タイムアウトと読み取りタイムアウトがそれぞれ指定されている場合、サーバーは指定された時間内に応答せず、 requests.exceptions.ConnectTimeout をスローします。

  • timeout=([接続タイムアウト], [読み取りタイムアウト])
  • 接続: クライアントはサーバーに接続し、http 要求をサーバーに送信します。
  • 読み取り: サーバーが最初のバイトを送信する前にクライアントが待機する時間

友達、それを解決するには、以下の手順に従ってください! ! !

解決

1.解決策、プロキシを設定するコード

proxies = {
    
    
        'http': '127.0.0.1:1212',
        'https': '127.0.0.1:1212'
    }
r = requests.get(url, headers=headers, proxies=proxies, timeout=20)


2. 関数を呼び出すと、別の例外がキャッチされます。

try:
     get_url(url)
except:
    print(url,'爬取失败')

実行後に解決



ヘルプ



この記事は次の記事に含まれています: 「さらばバグ」コラム

このコラムは、研究や仕事で遭遇したさまざまな困難なバグ、およびファングループの小さなパートナーによって提起されたさまざまな問題を記録するために使用されます. 記事の形式: エラーコード + エラー翻訳 + エラー理由 + 解決策, プログラムのインストール, 操作を含むプログラムの過程で他の問題に遭遇した場合、コラムを購読した後に他の問題に遭遇した場合 + ブロガーをフォローすると、それらを解決するために非公開でチャットできます! ! !

おすすめ

転載: blog.csdn.net/yuan2019035055/article/details/126628852