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示例代码:
fromseleniumimportwebdriverfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.common.proxyimportProxy, ProxyTypefromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasECfromselenium.webdriver.common.byimportByfromtimeimportsleep# 亿牛云(动态转发隧道代理)爬虫代理加强版 IP地址、端口号、用户名和密码proxy_host='www.16yun.cn'proxy_port='31000'proxy_username='16YUN'proxy_password='16IP'# 创建代理对象proxy=Proxy() proxy.proxy_type=ProxyType.MANUALproxy.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仪表盘的URLurl='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') # 从每个元素中提取数据forelementindata_elements: # 获取数据标题title=element.find_element_by_css_selector('.visual-title').textprint('标题:', title) # 获取数据值values=element.find_elements_by_css_selector('.value') forvalueinvalues: print('数值:', value.text) # 关闭浏览器驱动程序driver.quit()
在这个示例代码中,我们首先设置爬虫加强版代理服务器的IP地址、端口号、用户名和密码,跳转到Power BIdashboard 的URL,并使用WebDriverWait类等待某个元素出现之后,再查找dashboard上的数据元素。最后,我们从每个数据元素中提取数据,并将其打印到控制台。