【问题标题】:Web Scraping PowerBI figure data using RSelenium使用 RSelenium 抓取 PowerBI 图形数据
【发布时间】:2021-04-20 21:28:10
【问题描述】:

我正在尝试获取 powerBI 图表中的基础数据。该页面允许导出为表格,但四舍五入为整数,我希望更精确,即图表。

“https://app.powerbigov.us/view?r=eyJrIjoiYWQxOTUwODQtOWJiYi00NjRiLWEyNDctMjRiMzJmZGJiZDk4IiwidCI6IjBhZDJkYjBlLTQxZGUtNDNmZS05NDZjLWQyY2FkMDViZDk0ZCJ9”

我可以使用 RSelenium 提取页面源,但无法为图表数据获取正确的选择器

library(rvest)
library(dplyr)
library(RSelenium)

使用 RSelenium 在 selenium 服务器上启动一个 chrome

remDr <- remoteDriver(
  remoteServerAddr = 'localhost',
  port = 4445L,
  browserName = 'firefox'
)

在 Chrome 上打开一个新标签

remDr$open()

导航到我要分析的网站

report_url <- "https://app.powerbigov.us/view?r=eyJrIjoiYWQxOTUwODQtOWJiYi00NjRiLWEyNDctMjRiMzJmZGJiZDk4IiwidCI6IjBhZDJkYjBlLTQxZGUtNDNmZS05NDZjLWQyY2FkMDViZDk0ZCJ9"

#Scrape website's Power BI dashboard using R

remDr$navigate(report_url)

找到并点击指向代码数据的按钮

zipCodeBtn <- remDr$findElement('.//button[descendant::span[text()="Key Metrics"]]', using="xpath")
zipCodeBtn$clickElement()

#todo ED 访问 CLI visualContainer

以 XML 格式获取网站源代码

zipcode_data_table <- read_html(remDr$getPageSource()[[1]]) %>% html_source

其他堆栈溢出有一些表格 PowerBI 数据的示例,但没有图表。

谢谢

【问题讨论】:

  • 您在哪里可以看到更精确的数字?我在该页面上看到了 7 Day Average of the Percent of ED visits for CLI and ILI 的四舍五入百分比
  • 嵌入图表的y轴,那里的值更精确
  • 可以分享相关的html吗?也许是这样的形象?当我查看7 Day Average of the Percent of ED visits for CLI and ILI 时,我只能看到四舍五入的数字,所以我想知道我是否以某种方式查看了错误的视图。
  • 整个文件很长。这是标题的
    容器,但数据存储在不同的变量中。 aria-label=\"CLI 和 ILI 面积图的 ED 就诊百分比的 7 天平均值\" touch-action=\"auto\">
  • 数据似乎是相对的,在变量 d 中; d = \ “M10,177.3622915601926L11.575324961445252,177.60702339036916L13.150649922890505,177.77173464205455L14.725974884335757,...,175.80828063691814 \”/>

标签: r web-scraping powerbi


【解决方案1】:

转到:apps.automeris.io/wpd 选择:添加文件 选择绘图类型:2 d xy 通过在 x 轴和 y 轴上选择两个定位良好的点来定向轴,我使用日期差作为日期轴,x1 原点 0,x2 可计数的天数进行校准,选择标记为接近网格访问的 y 点 选择完成 设置 1,x2,y1,y2 的相对值

我选择了框,它将黄色框对齐捕获区域并自动选择点,然后删除不需要的点,但您可以绘制笔迹以聚焦捕获,或选择点

如果有多个系列,请使用颜色选择器选择颜色 单击运行,点将突出显示, 如果选择了轴或网格/标签,请删除任何不需要的点。只需单击删除,然后删除无关的 点击查看数据,我导出为 CSV

并非完全自动化,但最终非常方便且灵活。 与 R 包 'digitize' 做类似的事情但你必须选择读入点相比,自动化版本更好。其他建议的方法是更改​​为 tiff 或矩阵对象并使用 MATLAB、OCTAVE 或 GRASS 来获取与颜色目标匹配的矩阵坐标,但这种方法对用户更友好

还将直接导出到 plotly 以允许快速自定义版本

【讨论】:

  • 你能添加一段以上的录音吗?看起来很有趣
猜你喜欢
相关资源
最近更新 更多
热门标签