Power BI可以帮助用户从不同来源的数据中提取信息,生成交互式报表和可视化仪表盘。Power BI dashboard是Power BI的一个重要组成部分,它可以将来自多个数据源的数据整合到一个面板上,为用户提供全面的数据洞察。通过Power BI dashboard,用户可以方便地查看关键指标的实时数据、分析趋势变化和发现隐藏在数据中的模式和趋势。Power BI dashboard还具有高度的可定制性,用户可以自定义视觉效果、添加交互式过滤器和动态控件,使得数据分析更加直观和生动。同时,Power BI dashboard还支持实时数据更新和与其他应用程序的无缝集成,为用户提供了更便捷、高效和灵活的数据分析体验。
很多网站都是用Power BI动态生成统计网页,那么如何使用 Python/Selenium 采集这类网页呢?重点是Power BI dashboard是使用 JavaScript 呈现的,因此在尝试抓取任何数据之前,需要确保页面已完成加载。可以使用 WebDriverWait 类等待某个元素出现在页面上,这是页面加载完成的良好指示。以下是使用Selenium和爬虫代理IP采集Power BI dashboard网页并获取dashboard数据的Python示例代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.proxy import Proxy, ProxyType
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from time import sleep
# 亿牛云(动态转发隧道代理)爬虫代理加强版 IP地址、端口号、用户名和密码
proxy_host = 'www.16yun.cn'
proxy_port = '31000'
proxy_username = '16YUN'
proxy_password = '16IP'
# 创建代理对象
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'
proxy.ssl_proxy = f'http://{proxy_username}:{proxy_password}@{proxy_host}:{proxy_port}'
# 设置Chrome浏览器驱动程序使用代理
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=%s' % proxy.http_proxy)
options.add_argument('--disable-notifications')
options.add_argument('--disable-popup-blocking')
options.add_argument('--disable-infobars')
options.add_argument('--mute-audio')
driver = webdriver.Chrome(options=options)
# 跳转到Power BI仪表盘的URL
url = 'https://app.powerbi.com/view?r=eyJrIjoiYzg3NzQ0OTMtMjMwOC00Y2U2LThkNzItOGFkNjQ1YWE2OWQ4IiwidCI6IjA3NmJmNDliLTIxZmMtNDBjZS1hZTY0LWM1OTUwYTAyODk4NiJ9'
driver.get(url)
# 等待仪表盘加载完成
wait = WebDriverWait(driver, 20)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.visual-containerHost')))
# 查找仪表盘上的数据元素
data_elements = driver.find_elements_by_css_selector('.visual-containerHost')
# 从每个元素中提取数据
for element in data_elements:
# 获取数据标题
title = element.find_element_by_css_selector('.visual-title').text
print('标题:', title)
# 获取数据值
values = element.find_elements_by_css_selector('.value')
for value in values:
print('数值:', value.text)
# 关闭浏览器驱动程序
driver.quit()
在这个示例代码中,我们首先设置爬虫加强版代理服务器的IP地址、端口号、用户名和密码,跳转到Power BIdashboard 的URL,并使用WebDriverWait类等待某个元素出现之后,再查找dashboard上的数据元素。最后,我们从每个数据元素中提取数据,并将其打印到控制台。