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

如何获取触发模态窗口的URL,使用BeautifulSoup爬取模态窗口内容

FIBA EuroLeague Women比赛投篮图表模态框内容爬取方案

首先明确:BeautifulSoup只能解析页面初始请求返回的静态HTML内容,你点击点位才弹出的模态框内容,不属于初始静态HTML的直接渲染内容,所以分三种情况处理:

方案一:抓异步接口直接获取全量数据(最高效)

  • 打开浏览器开发者工具的「网络」面板,筛选Fetch/XHR类型的请求
  • 点击任意球场点位触发模态框弹出,观察网络面板里新增的请求,一般返回格式为JSON,包含你需要的球员信息、投篮数据、点位坐标等全量内容
  • 记录该接口的URL、请求参数、请求头配置,直接用requests库构造对应请求即可拿到所有数据,无需解析HTML
    注意:请求头需要和浏览器请求保持一致,尤其是User-Agent、Referer字段,避免触发反爬规则

方案二:提取静态页隐藏DOM节点

你在元素检查中能直接看到模态框的DOM代码,说明该模态框是提前渲染到静态页面中的,只是默认添加了display: none的隐藏样式,并未触发新请求:

  • 用元素检查工具找到模态框对应的DOM节点的class、id等唯一标识
  • 直接用BeautifulSoup匹配对应标识即可提取节点内容,无需模拟点击
    参考代码:
import requests
from bs4 import BeautifulSoup

target_url = "https://www.fiba.basketball/euroleaguewomen/21-22/game/1310/MBA-Moscow-ZVVZ-USK-Praha#tab=shot_chart"
# 替换为你自己浏览器的User-Agent值
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"}

resp = requests.get(target_url, headers=headers)
soup = BeautifulSoup(resp.text, "lxml")
# 将class值替换为你在元素检查中查到的模态框实际class属性
modal_node = soup.find("div", class_="your-modal-class-name")
# 提取模态框内所有文本
print(modal_node.get_text(strip=True))

方案三:模拟浏览器点击触发渲染

如果模态框内容是点击点位后才动态插入DOM的,就需要搭配Selenium、Playwright这类模拟浏览器工具处理:

  • 启动模拟浏览器打开目标页面,等待页面完全加载后切换到投篮图表标签
  • 定位所有可点击的球场点位元素,循环执行点击操作
  • 等待模态框渲染完成后,提取对应内容即可

内容的提问来源于stack exchange,提问作者José Carlos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 07:36:02