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

Python Selenium抓取博彩网站全量赛事数据并存入Pandas DataFrame方法

问题原因分析
  • 你当前代码中game.find('h4',{'class':'game-content-title'})仅会匹配每个运动项目容器下的第一场赛事的标题节点,要获取全部赛事,需要用find_all匹配该运动下所有的赛事节点。
修正后完整实现代码
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

DRIVER_PATH = 'C:\\executables\\chromedriver.exe'

options = Options()
options.headless = True
options.add_argument("--window-size=1920,1200")
# 增加UA标识避免反爬拦截
options.add_argument("user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36")

driver = webdriver.Chrome(options=options, executable_path=DRIVER_PATH)

driver.get("https://www.nike.sk/live/prehlad")
# 等待页面加载完成,可替换为显式等待提升稳定性
time.sleep(15)

soup = BeautifulSoup(driver.page_source,'html5lib')
# 所有运动项目的容器节点
sport_boxes = soup.find_all('div',{'data-atid':'live-sport-box'})

# 初始化存储赛事数据的列表
game_data = []

for sport_box in sport_boxes:
    # 提取运动类型,过滤掉多余的赛事数量字符
    sport_type = sport_box.find('h2').getText(strip=True).split(' ')[0]
    # 提取该运动下所有赛事的标题节点
    all_games = sport_box.find_all('h4',{'class':'game-content-title'})
    # 遍历当前运动的所有赛事
    for game in all_games:
        labels = game.findChildren('span',recursive=False)
        if len(labels) >=3: # 过滤异常不完整的赛事节点
            team_a = labels[0].getText(strip=True)
            result = labels[1].getText(strip=True)
            team_b = labels[2].getText(strip=True)
            # 控制台打印结果
            print(f"【{sport_type}】 {team_a} VS {team_b} 实时比分:{result}")
            # 存入列表后续转DataFrame
            game_data.append({
                "运动类型": sport_type,
                "A队名称": team_a,
                "B队名称": team_b,
                "实时赛果": result
            })

# 转换为Pandas DataFrame
df = pd.DataFrame(game_data)
# 输出DataFrame,也可以直接导出为csv文件
print(df)
# df.to_csv("nike实时赛事数据.csv", index=False, encoding='utf_8_sig')

# 关闭浏览器驱动
driver.quit()
补充说明
  • 上述代码已经实现了通过for循环批量提取你需要的A队、B队、赛果三个字段,同时支持自动区分不同运动类型
  • 如果需要额外提取联赛信息,只需要在遍历赛事的层级,向上查找联赛名称对应的节点选择器,增加对应字段的提取逻辑即可
  • 若要提升爬取稳定性,可以把固定延时time.sleep替换为Selenium显式等待,指定等待live-sport-box节点加载完成后再解析页面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:33:00