gpt4 book ai didi

javascript - R 网页抓取情节跟踪悬停文本没有 Selenium 或幻影

转载 作者:行者123 更新时间:2023-12-04 07:44:42 25 4
gpt4 key购买 nike

我正在尝试从网络上发布的一些情节跟踪中抓取悬停文本内容。我以前没有执行过这种类型的抓取,如果可能的话,我试图在没有 selenium 或 phantomjs 的 R 中执行此操作……也许使用 V8?我想知道是否有人可以指出我正确的方向。绘图链接如下。专门在图 21:艾伯塔省按区域划分的 COVID-19 阳性率的图中查找数据。谢谢!
https://www.alberta.ca/stats/covid-19-alberta-statistics.htm

最佳答案

使用 rvestjsonlite以下代码将为您提供您正在寻找的数据。 plot.ly 图表的数据存储在 <script> 中标签。
第一步是识别感兴趣的图形的widget ID,下面的代码展示了如何通过查找感兴趣的图形的标题文本来找到widget ID。然后你可以用 html_nodes() 搜索正确的节点和 html_attrs() . jsonlite::fromJSON()将 JSON 数据转换为 R 列表对象。

library(rvest)
library(jsonlite)
library(purrr)
library(stringr)
library(dplyr)


url <-
"https://www.alberta.ca/stats/covid-19-alberta-statistics.htm#laboratory-testing"

raw_html <- read_html(url)

# get widget ID

caption <-
"Figure 21: Positivity rate for COVID-19 in Alberta by zone."

figure_divs <- html_nodes(raw_html, ".figure")

figure_21_div_lgl <- grepl(caption, figure_divs)

widget_id <-
figure_divs[figure_21_div_lgl] %>%
html_nodes("div") %>%
html_attr("id")

# find data for the correct widget_id

data_for <-
html_nodes(raw_html, "script") %>%
html_attr("data-for")

data_for_figure_21_lgl <-
!is.na(data_for) & data_for == widget_id

data_for_figure_21 <-
html_nodes(raw_html, "script") %>%
.[data_for_figure_21_lgl] %>%
html_text()

dff21_l <- fromJSON(data_for_figure_21)
为了提取工具提示中显示的数据(“悬停文本”),我们需要遍历不同的元素。首先用 html_text()提取DOM结构.之后我们用 html_text() 提取文本.我们再遍历元素几次以拆分和清理字符串,以便最终将结果转换为 data.frame .
tooltip_text_raw <- unlist(dff21_l$x$data$text)
tooltip_text <- map(tooltip_text_raw, read_html)
tooltip_text <- map(tooltip_text, html_text) %>% unlist()

tooltip_text_split <- strsplit(tooltip_text, "\\:")

tooltip_text_split_almost_clean <-
map(tooltip_text_split,
~ gsub("Report Date|Percent|Number of tests", "", .x))

tooltip_text_split_clean <-
map(tooltip_text_split_almost_clean, ~ str_squish(.[. != ""]))

tests_df <-
map_dfr(tooltip_text_split_clean,
~ data.frame(
date = as.Date(.x[1]),
percent = .x[2],
tests = .x[3]
))

head(tests_df)
#> date percent tests
#> 1 2020-03-06 9.68 31
#> 2 2020-03-07 0.00 142
#> 3 2020-03-08 0.00 213
#> 4 2020-03-09 2.51 239
#> 5 2020-03-10 3.90 282
#> 6 2020-03-11 1.05 572

关于javascript - R 网页抓取情节跟踪悬停文本没有 Selenium 或幻影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67256574/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com