You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python requests检测域名时如何处理连接错误并分类结果?

处理requests连接异常并分类记录域名状态

你的代码当前未处理网络连接类异常,一旦遇到connection refused、timeout这类问题会直接抛出错误中断程序。要实现分类记录正常和异常域名,需要用try-except捕获requests的相关异常,同时区分HTTP状态码的情况。

修改后的代码示例

import requests

# 初始化两个列表,分别存储正常和异常的域名
working_domains = []
failed_domains = []

# 假设你的域名列表是domains_list,URL后缀是固定的URL变量
domains_list = ["example.com", "test.com", "invalid-domain.xyz"]
URL = "/some-path"
headers = {"User-Agent": "Mozilla/5.0"}

for domain in domains_list:
    full_url = f"http://{domain}{URL}"
    try:
        # 发送请求并获取响应,添加超时避免无限等待
        response = requests.get(full_url, headers=headers, timeout=5)
        if response.status_code == 200:
            working_domains.append(domain)
            print(f"{domain}: working")
        else:
            # 非200状态码归为无法正常服务的情况,记录状态码
            failed_domains.append(f"{domain} (状态码: {response.status_code})")
            print(f"{domain}: not working (状态码: {response.status_code})")
    except requests.exceptions.ConnectionError:
        # 捕获连接拒绝、DNS解析失败等连接类错误
        failed_domains.append(f"{domain} (连接错误)")
        print(f"{domain}: 连接错误")
    except requests.exceptions.Timeout:
        # 单独捕获请求超时异常
        failed_domains.append(f"{domain} (请求超时)")
        print(f"{domain}: 请求超时")
    except requests.exceptions.RequestException as e:
        # 兜底捕获其他所有requests相关异常
        failed_domains.append(f"{domain} (未知错误: {str(e)})")
        print(f"{domain}: 未知错误 - {str(e)}")

# 输出最终汇总结果
print("\n=== 汇总结果 ===")
print("正常工作的域名:")
for domain in working_domains:
    print(f"- {domain}")

print("\n无法正常连接的域名:")
for domain in failed_domains:
    print(f"- {domain}")

关键说明

  • 异常分层捕获:针对不同类型的网络问题分别捕获,比如连接错误、超时,最后用RequestException兜底所有requests相关异常,避免程序中途崩溃。
  • 超时控制:给requests.get添加timeout参数,防止请求因网络问题无限挂起。
  • 精细化记录:异常情况标注具体错误类型,非200状态码记录对应码值,方便后续排查问题。
  • 分类存储:用两个列表分别留存正常和异常域名,便于后续统计或导出结果。

内容的提问来源于stack exchange,提问作者MrTux01

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 18:17:12