抓取PowerBI仪表板报告:在滚动表中扩展行和加载/保存值

客观的:

我正在尝试使用 Selenium在此公共 PowerBI 仪表板的“交付”页面中抓取“报告交付>>按疫苗数量”的 PowerBI 报告,以获取列出所有国家/地区的表格,以及交付的疫苗名称,以及递送的剂量数。

目标和设置:

此屏幕截图显示了我正在尝试抓取的 PowerBI 报告。单击登录页面上的“交付”并选择“报告的交付>>按疫苗数量”后,页面下半部分会加载一个表格,如下图所示。您可以右键单击表上的任意位置以展开所有行,即国家/地区名称。在每个国家/地区名称下方,一栏中是提供的疫苗名称,相邻栏中是“已提供的剂量”。有 100 多行包含国家/地区名称,这些行会在您向下滚动此表时动态加载。

迄今为止的进展:

我设法启动了 Chrome 无头浏览器,通过单击相关按钮进入“交付”页面,然后通过单击“查看选项”菜单中的相关复选框打开我想要的正确报告左。在这之后我被卡住了。我无法弄清楚如何扩展这个动态呈现的表格中的所有行,我也无法弄清楚如何向下滚动表格并保存国家/地区名称以及它们各自的疫苗名称和剂量发表。

关于扩展所有国家/地区名称行,我在 StackOverflow 中看到一些帖子建议在 Actions 类中使用 Selenium 的 Context Click,但我似乎无法弄清楚如何将它应用于我的示例。

关于滚动问题,我在这里也有点不知所措。我试图找到为表调用数据的底层 API,但徒劳无功,但我的新手眼睛无法发现任何东西,我想知道还有什么方法可以一直向下滚动表来抓取这个数据。

任何帮助、提示或建议将不胜感激!

代码到现在

from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions

webdriver = "C:Program Files (x86)GoogleChromeApplicationchromedriver.exe"
options = ChromeOptions()
driver = Chrome(webdriver, options = options)

url = 'https://app.powerbi.com/view?r=eyJrIjoiNmE0YjZiNzUtZjk2OS00ZTg4LThlMzMtNTRhNzE0NzA4YmZlIiwidCI6Ijc3NDEwMTk1LTE0ZTEtNGZiOC05MDRiLWFiMTg5MjAyMzY2NyIsImMiOjh9&pageName=ReportSectiona329b3eafd86059a947b'

driver.get(url)
  
#click on "Delivery" button
driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/exploration/div/explore-canvas-modern/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container-modern[11]/transform').click()

#click on "Reported deliveries >> By number of vaccines" click box
driver.find_element_by_xpath('//*[@id="pvExplorationHost"]/div/div/exploration/div/explore-canvas-modern/div/div[2]/div/div[2]/div[2]/visual-container-repeat/visual-container-modern[8]/transform/div/div[3]/div/visual-modern/div/button').click()

以上是抓取PowerBI仪表板报告:在滚动表中扩展行和加载/保存值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>