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

如何用Beautiful Soup筛选特定Symbol的期权Bid/Ask价格?

筛选特定期权条目并提取报价

问题分析

你之前的代码无法找到目标条目,核心问题有两个:一是symbol并非<tr>元素的直接属性,而是嵌套在<tr>的data-row属性的JSON数据中;二是你错误地在<tr>内部查找子<tr>元素,不符合页面DOM结构。

解决方案

方法1:解析data-row中的JSON数据(推荐)

每个<tr>的data-row属性存储了完整的期权结构化数据,解析该JSON可直接定位目标symbol并提取报价:

import requests
import json
from bs4 import BeautifulSoup

page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find_all('tr', {'class':"parent"})

target_symbol = "BTCC  250117C5.00"
for result in results:
    # 解析data-row属性为JSON对象
    data_row = json.loads(result['data-row'])
    # 检查call期权是否匹配目标symbol
    if data_row['call']['symbol'] == target_symbol:
        bid_price = data_row['call']['bid_price']
        ask_price = data_row['call']['ask_price']
        print(f"目标期权bid价: {bid_price}, ask价: {ask_price}")
        break
    # 检查put期权是否匹配目标symbol
    elif data_row['put']['symbol'] == target_symbol:
        bid_price = data_row['put']['bid_price']
        ask_price = data_row['put']['ask_price']
        print(f"目标期权bid价: {bid_price}, ask价: {ask_price}")
        break

方法2:从DOM元素中直接提取

如果不想解析JSON,也可以通过<td>的类名直接定位报价,但需要先确认目标symbol对应的期权类型:

import requests
import json
from bs4 import BeautifulSoup

page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
results = soup.find_all('tr', {'class':"parent"})

target_symbol = "BTCC  250117C5.00"
for result in results:
    data_row = json.loads(result['data-row'])
    # 确认当前tr包含目标symbol后提取对应td内容
    if data_row['call']['symbol'] == target_symbol:
        bid_price = result.find('td', class_='call bid_price').text.strip()
        ask_price = result.find('td', class_='call ask_price').text.strip()
        print(f"目标期权bid价: {bid_price}, ask价: {ask_price}")
        break
    elif data_row['put']['symbol'] == target_symbol:
        bid_price = result.find('td', class_='put bid_price').text.strip()
        ask_price = result.find('td', class_='put ask_price').text.strip()
        print(f"目标期权bid价: {bid_price}, ask价: {ask_price}")
        break

关键提示

  • data-row中的JSON包含了所有标准化数据,解析后直接提取字段比遍历DOM元素更高效、更不易受页面结构变化影响。
  • 目标symbol可能属于call(认购)或put(认沽)期权,需分别检查两种类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 18:27:00