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

如何测试JSON文件中的链接?检测JSON数据库内失效链接

检测JSON数据库中链接有效性的实现方案

核心思路

遍历JSON数据中的每个条目,识别出所有URL字段,通过发送HTTP请求校验链接状态,筛选出返回错误状态码或无法访问的失效链接。

工具选择

用Python实现,依赖两个基础库:

  • json:用于加载和解析JSON数据
  • requests:用于发送HTTP请求检测链接状态

代码实现

  1. 加载JSON数据
    假设你的JSON数据存储在organizations.json文件中,先读取并解析:
import json
import requests
from time import sleep

# 加载JSON数据
with open("organizations.json", "r", encoding="utf-8") as f:
    data = json.load(f)
  1. 定义链接检测函数
    用HEAD请求(仅获取响应头,比GET更高效)检测链接,同时处理各类请求异常:
def check_url_validity(url):
    if not url.startswith(("http://", "https://")):
        return False, "非有效URL格式"
    
    try:
        # 发送HEAD请求,设置超时时间5秒
        response = requests.head(url, timeout=5, allow_redirects=True)
        # 状态码在200-399之间视为有效链接
        if 200 <= response.status_code < 400:
            return True, f"有效,状态码:{response.status_code}"
        else:
            return False, f"失效,状态码:{response.status_code}"
    except requests.exceptions.RequestException as e:
        return False, f"无法访问:{str(e)}"
  1. 遍历检测所有链接
    遍历每个组织条目,检查所有可能包含URL的字段(或直接筛选值为URL的字段):
invalid_links = []

for item in data:
    org_name = item["Organisation"]
    # 遍历条目中的所有键值对,筛选URL字段
    for key, value in item.items():
        if isinstance(value, str) and value.startswith(("http://", "https://")):
            is_valid, msg = check_url_validity(value)
            if not is_valid:
                invalid_links.append({
                    "组织名称": org_name,
                    "字段名": key,
                    "链接": value,
                    "原因": msg
                })
        # 避免请求过于频繁被网站拦截,每次检测后暂停0.5秒
        sleep(0.5)

# 输出失效链接结果
print("=== 失效链接列表 ===")
for link in invalid_links:
    print(f"组织:{link['组织名称']}")
    print(f"字段:{link['字段名']}")
    print(f"链接:{link['链接']}")
    print(f"原因:{link['原因']}\n")

注意事项

  • 请求频率控制:添加sleep()避免短时间内大量请求被目标网站封禁
  • 请求方式兼容:部分网站可能拒绝HEAD请求,可将requests.head()改为requests.get()并添加stream=True参数(只下载响应头)
  • 超时设置:必须设置超时时间,避免因个别慢链接阻塞程序
  • 编码处理:读取JSON文件时指定encoding="utf-8",避免中文或特殊字符乱码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 00:59:52