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

如何从Pandas DataFrame提取并自动下载CVE网站的Raw列链接?

解决方案

pd.read_html()仅提取表格文本内容,无法保留HTML元素的属性(如链接的href),因此需要通过Selenium直接定位表格内的链接元素获取真实下载地址,再实现自动下载功能。

修改后的完整代码

import pandas as pd
from selenium import webdriver
from selenium.webdriver.common.by import By
import requests
import os

# 初始化Safari浏览器(可替换为Chrome/Firefox等)
browser = webdriver.Safari()
browser.get("https://www.cve.org/downloads")

# 获取表格所有行元素
table_rows = browser.find_elements(By.CSS_SELECTOR, "table tr")

# 初始化存储数据的列表
data_list = []
# 跳过表头行,遍历数据行
for row in table_rows[1:]:
    cols = row.find_elements(By.TAG_NAME, "td")
    # 提取各列文本内容
    format_type = cols[0].text.strip()
    unix_compressed = cols[1].text.strip()
    gzipped = cols[2].text.strip()
    # 提取Raw列的文本和对应链接
    raw_col = cols[3]
    raw_text = raw_col.text.strip()
    raw_download_link = raw_col.find_element(By.TAG_NAME, "a").get_attribute("href")
    # 处理备注列(避免索引越界)
    notes = cols[4].text.strip() if len(cols) > 4 else ""
    
    # 将当前行数据存入列表
    data_list.append({
        "Format": format_type,
        "Unix Compressed (.Z)": unix_compressed,
        "Gzipped": gzipped,
        "Raw Text": raw_text,
        "Raw Download Link": raw_download_link,
        "Additional Notes": notes
    })

# 转换为DataFrame
df = pd.DataFrame(data_list)
print(df)

# 自动下载Raw列的所有文件
download_directory = "./cve_downloads"
os.makedirs(download_directory, exist_ok=True)

for _, row in df.iterrows():
    download_url = row["Raw Download Link"]
    filename = download_url.split("/")[-1]
    save_path = os.path.join(download_directory, filename)
    
    # 使用requests下载文件(避免Selenium弹窗问题)
    response = requests.get(download_url, stream=True)
    with open(save_path, "wb") as file:
        for chunk in response.iter_content(chunk_size=1024):
            file.write(chunk)
    print(f"已完成下载: {filename}")

# 关闭浏览器
browser.quit()

核心调整说明

  • 直接通过Selenium定位表格内的<a>标签,调用get_attribute("href")获取真实下载链接
  • 采用requests库下载文件,比Selenium模拟点击更高效,同时规避浏览器下载弹窗干扰
  • 自动创建下载目录,避免路径不存在导致的错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 20:05:31