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

已实现URL请求,如何移除文本文件中4xx/5xx状态码的URL?

移除无效URL(4xx/5xx状态码)的解决方案

你已经搞定了URL请求的核心部分,剩下的过滤无效URL和保存结果其实很简单,我帮你调整并完善了代码,直接就能用:

完整代码实现

import requests

# 读取文件中的URL,自动处理换行符和空行
with open("test.txt", "r") as file_inp:
    # 用列表推导式读取并清洗URL:去掉换行、过滤空行
    url_list = [line.strip() for line in file_inp if line.strip()]

# 用来存储有效的URL
valid_urls = []

for url in url_list:
    try:
        # 发起请求,设置超时防止程序卡住
        response = requests.get(url, timeout=10)
        # 判断状态码:2xx(成功)和3xx(重定向)都算有效URL
        if 200 <= response.status_code < 400:
            valid_urls.append(url)
        else:
            print(f"移除无效URL:{url} | 状态码:{response.status_code}")
    except requests.exceptions.RequestException as e:
        # 处理请求异常(比如连不上、超时、URL格式错),这类也直接移除
        print(f"URL请求失败:{url} | 错误信息:{str(e)} | 已移除")

# 把有效URL写入新文件(建议先写新文件,确认没问题再替换原文件)
with open("valid_urls.txt", "w") as file_out:
    for valid_url in valid_urls:
        file_out.write(f"{valid_url}\n")

print(f"处理完成!共保留 {len(valid_urls)} 个有效URL,已保存到 valid_urls.txt")

几个关键细节说明

  • 安全的文件操作:用with语句打开文件,会自动帮你关闭文件,避免忘记关闭导致的资源泄漏
  • URL清洗:读取时用strip()去掉每行的换行符和空白字符,不然可能会因为URL带换行符导致请求失败
  • 异常兜底:加入try-except捕获请求过程中的各种异常(比如网络断了、URL格式不对),这些情况的URL也属于无效,直接过滤
  • 灵活的状态码判断:这里把200-399都视为有效(包含重定向),如果你只想要完全成功的2xx状态码,可以把判断条件改成response.status_code // 100 == 2
  • 安全的结果保存:默认写入新文件valid_urls.txt,避免直接覆盖原文件导致数据丢失,确认结果没问题后再替换原文件即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:25:15