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

Python动态网站表格爬取问题:CME Group期权日历数据提取遇SSL错误

解决CME Group期权日历页面爬取的SSL问题与动态数据提取

1. 修复SSL握手错误

你的SSL握手错误源于ChromeDriver默认安全策略与目标网站SSL配置不兼容,给ChromeDriver添加以下启动参数即可解决:

  • --ignore-certificate-errors:忽略证书验证错误
  • --ignore-ssl-errors:忽略SSL层级错误
  • --disable-web-security:禁用跨域安全限制(部分场景需启用)
  • --allow-running-insecure-content:允许加载非安全资源

2. 动态页面交互与数据提取

该页面为动态渲染,需模拟用户操作选择产品、切换月份后,等待表格加载完成再提取数据。核心步骤:

  • 初始化配置好参数的ChromeDriver
  • 等待页面元素加载,选择目标产品(示例选S&P 500 E-mini期权)
  • 切换到「所有月份」选项
  • 等待表格渲染完成后提取HTML

3. 导出数据到CSV

使用pandas可快速将HTML表格转为DataFrame并导出为CSV,无需手动解析表格结构。

完整代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

# 配置ChromeOptions解决SSL问题
chrome_options = Options()
chrome_options.add_argument("--ignore-certificate-errors")
chrome_options.add_argument("--ignore-ssl-errors")
chrome_options.add_argument("--disable-web-security")
chrome_options.add_argument("--allow-running-insecure-content")

# 初始化Driver与等待器
driver = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(driver, 20)  # 20秒超时,可根据网络调整

try:
    # 打开目标页面
    url = 'https://www.cmegroup.com/tools-information/quikstrike/options-calendar.html'
    driver.get(url)
    
    # 选择示例产品(S&P 500 E-mini期权),可替换为其他产品的XPath
    product_dropdown = wait.until(EC.element_to_be_clickable((By.ID, "productDropdown")))
    product_dropdown.click()
    target_product = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[contains(text(), 'S&P 500 E-mini')]")))
    target_product.click()
    
    # 切换到「所有月份」选项
    month_dropdown = wait.until(EC.element_to_be_clickable((By.ID, "monthDropdown")))
    month_dropdown.click()
    all_months_option = wait.until(EC.element_to_be_clickable((By.XPATH, "//li[text()='All Months']")))
    all_months_option.click()
    
    # 等待表格加载完成
    table = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "table.qstk-options-calendar")))
    
    # 读取表格数据并导出CSV
    df = pd.read_html(table.get_attribute('outerHTML'))[0]
    df.to_csv('cme_options_calendar.csv', index=False)
    print("数据已成功导出到cme_options_calendar.csv")

finally:
    # 确保Driver关闭
    driver.quit()

注意事项

  • 若目标产品的XPath不匹配,可通过浏览器开发者工具查看元素文本/属性,替换对应XPath
  • 超时时间可根据网络速度调整,避免因加载缓慢导致报错
  • 需提前安装依赖:pip install selenium pandas

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 02:57:31