【问题标题】:Catch proxy errors on requests python在请求 python 上捕获代理错误
【发布时间】:2018-08-05 09:49:16
【问题描述】:

我是 python 新手,所以遇到了一些麻烦。我正在尝试构建一个将数据发布到具有代理的外部服务器的工具。我有它的工作,但问题是我不知道如何捕获代理连接错误并打印其他内容。我写的代码是:

import requests
from bs4 import BeautifulSoup

headers = {
    "User-Agent": "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.11) Gecko/2009060215 Firefox/3.0.11",
    "Content-Type": "application/json"
}
proxies = { 
    "https": "https://244.324.324.32:8081",
}
data = {"test": "test"}
r = requests.post("https://example.com/page", proxies=proxies, json=data, headers=headers)
print(r.text)

当代理死机(未连接/工作)或类似情况时,如何打印,例如“代理连接错误”。这是我第一次使用python,所以我遇到了麻烦。

谢谢

【问题讨论】:

标签: python proxy python-requests


【解决方案1】:

接受的答案对我不起作用。
我不得不使用requests.exceptions.ProxyError,即:

try:
    req = requests.post(...)
except requests.exceptions.ProxyError as err:
    print("Proxy Error", err)

【讨论】:

    【解决方案2】:

    İ如果你不知道异常错误,你可以先运行这个

    try:
        req = requests.post(...)
    except requests.exceptions.ProxyError as err:
        print(sys.exc_info()[0])
    

    这会给你错误名称,然后你可以添加你的代码这个错误。 (有时需要导入异常错误。)

    【讨论】:

      【解决方案3】:

      您可以使用 try/except 块来捕获连接错误:

      try:
        r = requests.post("https://example.com/page", proxies=proxies, json=data, headers=headers)
      except requests.exceptions.ConnectionError:
        print "Proxy Connection Error"
      print(r.text)
      

      在上面的代码中,如果requests.post 引发ConnectionErrorexcept 块将捕获它并打印出Proxy Connection Error 消息。

      【讨论】:

      • 这不仅仅捕获代理错误。
      猜你喜欢
      • 2018-01-08
      • 1970-01-01
      • 2022-08-24
      • 2012-02-10
      • 2016-09-16
      • 2016-10-19
      • 2018-02-24
      • 2017-03-01
      • 1970-01-01
      相关资源
      最近更新 更多