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

从NVD爬取当日漏洞时日期匹配失败的问题排查

排查NVD漏洞日期匹配失败的原因及解决办法
  • 隐藏空白/不可见字符问题
    爬取到的日期字符串可能带有前后空格、换行符(\n)或制表符(\t),比如实际值是' 01/09/2023 ',和你定义的'01/09/2023'完全不相等。解决方式是对爬取到的日期做去空白处理:
# 假设date是爬取到的日期字符串
cleaned_date = date.strip()
if currentday == cleaned_date:
    print("match")
  • 日期包含时间部分
    NVD返回的发布日期通常会附带时间信息,比如'01/09/2023 03:15:00 UTC',只拿纯日期字符串去匹配自然失败。可以提取日期部分,或者用datetime模块解析后比较:
from datetime import datetime

# 提取日期部分后解析
nvd_date = datetime.strptime(date.split(' ')[0], '%m/%d/%Y')
# 解析你的currentday
current_day = datetime.strptime(currentday, '%m/%d/%Y')

if nvd_date.date() == current_day.date():
    print("match")
  • 爬取结果是列表而非字符串
    如果你的爬取逻辑返回的是列表类型(比如['01/09/2023']),直接用字符串做==比较肯定不成立。解决方式是取列表的第一个元素再处理:
# 假设date是爬取到的列表
actual_date = date[0].strip()
if currentday == actual_date:
    print("match")
  • 日期格式混淆(MM/DD/YYYY vs DD/MM/YYYY)
    NVD使用的日期格式是MM/DD/YYYY(月/日/年),如果你误把01/09/2023当成了1日9月,而实际是1月9日,那自然匹配不上。先核对爬取到的原始日期值,再调整currentday的格式。

快速排查技巧

先打印爬取到的原始日期的类型和原始值,能快速定位问题:

print(type(date))
print(repr(date))  # repr会显示所有隐藏字符,比如空格、换行

比如输出'01/09/2023\n'说明存在换行符,['01/09/2023']说明返回结果是列表,据此针对性调整即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 01:55:17