python - 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 )测试了我的设置,并且能够检索源代码 - 这个特定站点有一些东西。
非常感谢您的帮助。
解决方案
推荐阅读
- c# - 在 wpf 的 GridControl.ItemsSource 中显示 ICollection 数据的 FieldName 是什么
- scala - 如何将 Spark DataFrame 中具有未知键值对的 JSON 解析为多行值
- encryption - 如何使用客户端管理的密钥加密 Kubernetes pod 使用的实际存储/卷(提供者端对密钥的最少/零知识)?
- c++ - 访问对象指针的 STL 列表
- javascript - 无法从 Firebase 云函数中的外部 api 读取 POST 响应正文
- python - 在破折号数据表(python)中取消选择active_cell
- reactjs - onMouseEnter 在所有映射元素上处于活动状态
- angular - NgModel没有在HTML中绑定 - Angular9
- database - 相同的连接,不同模式中具有相同名称的表。如何强制 Datagrip 包含数据库名称?
- android - 停止预先安装的屏幕录制应用程序在 android 中录制屏幕