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

如何用Python获取泛欧交易所全部到期日的期权链数据?

问题描述

我想要爬取泛欧交易所(Euronext)的期权链数据,以喜力(Heineken)为例,对应的网页地址为:https://live.euronext.com/en/product/index-options/HEI-DAMS。目前我仅能获取下一个到期日的期权链数据,使用的代码如下:

import requests
url = 'https://live.euronext.com/en/ajax/getPricesOptionsAjax/stock-options/HEI/DAMS/' 
req = requests.get(url).json()

网页上选择“Select All”后可显示更多其他到期日的数据(例如2024年2月的期权数据默认不显示),但当前脚本无法获取这些数据。我尝试通过POST请求携带表单数据:

import requests
url = 'https://live.euronext.com/en/ajax/getPricesOptionsAjax/stock-options/HEI/DAMS/'
form_data = {"md[]": "04-2024", "ps": "11"}
req = requests.post(url, data=form_data)

结果仍仅能获取1月的数据,请问如何调整代码以获取所有到期日的期权链数据?

解决方案
  • 先获取所有可用到期月份
    先通过GET请求拉取初始数据,其中maturities字段包含了平台提供的所有到期月份选项,无需手动枚举:

    import requests
    
    url = 'https://live.euronext.com/en/ajax/getPricesOptionsAjax/stock-options/HEI/DAMS/'
    # 发起GET请求提取所有到期月份
    init_response = requests.get(url).json()
    available_maturities = [item['value'] for item in init_response['maturities']]
    
  • 发送POST请求获取全量期权数据
    将所有到期月份以数组形式传入md[]参数,同时把ps(每页数据量)设为足够大的值(比如9999),跳过分页逻辑直接获取所有数据:

    # 构造表单参数
    form_data = {
        "md[]": available_maturities,
        "ps": "9999"
    }
    # 添加浏览器请求头避免被服务器拦截
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
    }
    # 发送POST请求并解析结果
    final_response = requests.post(url, data=form_data, headers=headers)
    all_options_data = final_response.json()
    
  • 关键参数说明

    • md[]:必须以数组形式传入所有目标到期月份,仅传单个月份只会返回对应到期日的数据
    • ps:控制每页返回的数据条数,设置为超大值可一次性获取全量数据
    • 请求头:模拟浏览器请求标识,部分场景下可避免服务器拒绝非浏览器发起的请求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 20:30:20