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

如何用Python网页爬取Power BI仪表板表格并导出为CSV/XLSX

解决Power BI仪表板数据提取问题

Power BI公开仪表板的数据提取无法仅依赖静态HTTP请求完成,核心内容由JavaScript动态渲染,且iframe元素ID、会话认证均为动态生成。你的原代码存在以下关键问题:

  • 硬编码的data-element-id是页面动态生成值,每次访问都会变化,无法稳定定位iframe
  • 直接用requests请求iframe地址会缺失会话认证,无法获取有效内容
  • 表格数据由JS异步加载,初始HTML中不存在完整表格结构

可行解决方案(基于Selenium动态渲染)

使用Selenium模拟浏览器行为,加载完整页面后提取表格数据:

步骤1:安装依赖

pip install selenium pandas webdriver-manager

步骤2:完整代码实现

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

# Power BI仪表板URL
url = "https://app.powerbi.com/view?r=eyJrIjoiNTUyNTk4YmUtN2U4Ny00N2MzLWFlM2UtYTY1ZGNhYTA5N2NmIiwidCI6IjFlZjViNjViLTkxYjktNGVjMS1iNmU0LTc3YTA1MzcxNTk1MyJ9"

# 初始化Chrome浏览器
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(url)

# 等待页面加载并提取表格数据
try:
    # 等待iframe加载,用通用标签定位避免硬编码ID
    iframe = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.TAG_NAME, "iframe"))
    )
    driver.switch_to.frame(iframe)
    
    # 等待表格元素加载完成(若表格有特定类名,可替换为By.CSS_SELECTOR定位)
    table = WebDriverWait(driver, 20).until(
        EC.presence_of_element_located((By.TAG_NAME, "table"))
    )
    
    # 将表格HTML转换为DataFrame
    df = pd.read_html(table.get_attribute('outerHTML'))[0]
    
finally:
    driver.quit()

# 导出数据到CSV和XLSX
df.to_csv('power_bi_data.csv', index=False, encoding='utf-8-sig')
df.to_excel('power_bi_data.xlsx', index=False)

print("数据导出完成!")

代码说明

  • webdriver-manager自动管理Chrome驱动,无需手动下载驱动文件
  • WebDriverWait确保等待元素完全加载后再操作,避免页面渲染延迟导致的定位失败
  • 切换到iframe上下文后再定位表格,确保操作在正确的页面层级
  • 若目标表格不是标准<table>标签,可通过浏览器开发者工具查看元素类名/XPATH,替换By.TAG_NAME为By.CSS_SELECTOR或By.XPATH

注意事项

  • 若仪表板需要登录,需在代码中添加登录逻辑(账号密码输入、验证码处理等)
  • 遇到反爬机制时,可添加自定义浏览器头部、设置隐式等待或使用代理IP
  • 定期检查Power BI页面结构变化,及时调整元素定位规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 05:25:18