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

如何用Python提取打印NVD API返回的深层嵌套JSON中CVE相关字段

NVD CVE接口指定字段提取代码

你可以直接使用以下修改后的代码提取所需的4个字段,requests库内置了json()方法可以直接解析响应内容,不需要手动调用json.loads:

import requests

url = "https://services.nvd.nist.gov/rest/json/cve/1.0/CVE-2021-40463/"
# 单CVE查询不需要额外传q参数,直接请求即可
response = requests.get(url)
data = response.json()

# 提取基础节点,单CVE查询下CVE_Items列表仅有1条数据
cve_item = data['result']['CVE_Items'][0]

# 1. 提取cve ID
cve_id = cve_item['cve']['CVE_data_meta']['ID']
# 2. 提取所有url ref(返回为列表,可按需遍历)
url_ref_list = [ref['url'] for ref in cve_item['cve']['references']['reference_data']]
# 3. 提取CVE描述(默认取第一条英文描述)
description = cve_item['cve']['description']['description_data'][0]['value']
# 4. 提取CVSS v3严重等级,若无v3数据可替换为baseMetricV2下的severity字段
try:
    severity = cve_item['impact']['baseMetricV3']['cvssV3']['baseSeverity']
except KeyError:
    severity = cve_item['impact'].get('baseMetricV2', {}).get('severity', '未评级')

# 打印结果
print("CVE ID:", cve_id)
print("严重等级:", severity)
print("描述:", description)
print("参考链接:")
for idx, ref in enumerate(url_ref_list, 1):
    print(f"{idx}. {ref}")

逻辑说明

  • 代码做了兼容性处理,部分老旧CVE没有CVSS v3评分时,会自动尝试取CVSS v2的严重等级,两者都没有的话会返回「未评级」避免报错
  • 参考链接返回的是所有官方提供的关联链接,你可以按需筛选对应类型的链接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:36:00