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

爬取NVD漏洞库CVE-2022-1285链接返回None问题排查

问题原因

元素定位层级错误:目标页面中类名为col-md-2的<span>标签本身不携带href属性,可点击的CVE跳转链接是嵌套在该span标签内部的<a>子标签,直接在span元素上调用get('href')必然返回None。

修复方案

两种实现思路均可正常获取目标内容:

  • 思路1:先匹配到类名为col-md-2的span标签,再向下查找内部嵌套的a标签,从a标签上提取文本和链接属性
  • 思路2:直接通过CSS选择器匹配span.col-md-2下的a标签,一步完成元素定位

可运行的完整代码如下:

import requests
from bs4 import BeautifulSoup as bs

target_url = 'https://nvd.nist.gov/vuln/full-listing/2022/6'
# 补充常规请求头,避免被站点反爬策略拦截返回异常页面
request_headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36"
}

resp = requests.get(target_url, headers=request_headers)
soup = bs(resp.text, 'html.parser')

# 遍历匹配到的CVE条目
for cve_item in soup.find_all('span', class_='col-md-2'):
    link_tag = cve_item.find('a')
    if not link_tag:
        continue
    cve_id = link_tag.text.strip()
    # 匹配到目标CVE后输出信息
    if cve_id == 'CVE-2022-1285':
        cve_detail_path = link_tag.get('href')
        # 拼接得到完整绝对链接
        cve_full_link = f"https://nvd.nist.gov{cve_detail_path}"
        print(f"CVE编号:{cve_id}")
        print(f"详情页相对路径:{cve_detail_path}")
        print(f"详情页完整链接:{cve_full_link}")
        break
运行结果

代码执行后正常输出如下内容:

CVE编号:CVE-2022-1285
详情页相对路径:/vuln/detail/CVE-2022-1285
详情页完整链接:https://nvd.nist.gov/vuln/detail/CVE-2022-1285

补充说明:如果请求时不携带User-Agent头,有概率被NVD的Web应用防火墙拦截,返回403状态码或者非预期的页面内容,导致元素匹配失败,爬取该站点时建议默认加上常规浏览器请求头。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 10:54:25