首页 > 解决方案 > Selenium 刮取 Power BI

问题描述

我想使用 Python从华盛顿州卫生部仪表板 ( https://www.doh.wa.gov/Emergencies/NovelCoronavirusOutbreak2020COVID19/DataDashboard ) 抓取每日 COVID-19 数据。

该站点具有嵌入式 Power BI 仪表板。一些简单的检查表明该站点正在从 Power BI 站点 ( https://app.powerbigov.us/view?... ) 请求特定视图。view随着仪表板数据的更新,此参数每天都会更改。我一直在使用一个简单request.get的方法来查询这个地址,但是当页面在 JavaScript 中呈现时,我无法view单独使用这个包从卫生部站点捕获不断变化的参数。我尝试了以下 Selenium 代码(Ubuntu,Chromium),但尽管我努力等到相关的 iframe 被渲染,但我收到了超时消息:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

target_url = 'http://www.doh.wa.gov/Emergencies/NovelCoronavirusOutbreak2020COVID19/DataDashboard'
chrome_options = Options()
chrome_options.add_argument('--no-sandbox')
chrome_options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36')
chrome_options.add_argument('--headless')
chrome_options.add_argument('--remote-debugging-port=9222')

driver = webdriver.Chrome(options=chrome_options)  

driver.get(target_url)

wait(driver, 20).until(EC.frame_to_be_available_and_switch_to_it((By.ID,"CovidDashboardFrame")))

TimeoutException: Message: timeout: Timed out receiving message from renderer: 300.000 (Session info: headless chrome=83.0.4103.61)

如果不进行帧切换,则返回空白页。我已经用另一个站点 ( www.google.com )测试了我的设置,并且能够检索源代码 - 这个特定站点有一些东西。

非常感谢您的帮助。

标签: pythonseleniumweb-scrapingpowerbi

解决方案


推荐阅读