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

用BeautifulSoup提取data-op-info键值对并导出fullgame到dataframe

实现方案

直接在原有代码基础上调整即可,适配多div批量提取的完整代码如下:

import json
import pandas as pd
from bs4 import BeautifulSoup
import urllib.request

source = urllib.request.urlopen('https://www.oddsshark.com/nfl/odds').read()
soup = BeautifulSoup(source, 'html.parser')

results = soup.find_all(class_ = "op-item op-spread op-opening")

# 初始化空列表存储所有提取结果
fullgame_data = []

for result in results:
    try:
        op_info = json.loads(result['data-op-info'])
        # 仅当fullgame字段存在时存入列表
        if 'fullgame' in op_info:
            fullgame_data.append({
                'fullgame': op_info['fullgame']
            })
    except:
        # 异常节点直接跳过,避免中断整个提取流程
        continue

# 转换为DataFrame格式
df = pd.DataFrame(fullgame_data)
# 可直接调用df.to_csv等方法导出数据,或打印验证结果
print(df)

方案说明

  • 新增pandas依赖用于生成DataFrame,通过列表预存结果的方式天然适配多div批量处理场景,不会出现单div方案的失效问题
  • 增加异常捕获逻辑,遇到属性缺失、json解析失败、字段不存在的异常节点直接跳过,不会中断整个提取流程
  • 如果需要同时提取data-op-info里的其他字段,只需要修改append的字典结构即可,比如要同步存line值可以改成fullgame_data.append({'fullgame': op_info['fullgame'], 'line': op_info.get('line')})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:03