我想使用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)上测试了我的设置,并且能够检索源代码-该特定网站有些问题。
非常感谢您的帮助。