首页 > 解决方案 > 当 SelectorGadget 找不到有效路径时 R 抓取

问题描述

我尝试从此处的交互式饼图中抓取每个国家/地区的数据:https ://transparencyreport.google.com/eu-privacy/overview?site_types=start:1453420800000;end:1633219199999;country:&lu=site_types

但是选择器小工具不允许我选择饼图上的数据点。我该如何解决这个问题?

library(rvest)
library(dplyr)
link = "https://transparencyreport.google.com/eu-privacy/overview?site_types=start:1453420800000;end:1633219199999;country:&lu=site_types"
page = read_html(link)
percentage = page %>% html_nodes("#content_types div") %>% html_text()

"#content_types div"返回无效。

标签: rweb-scraping

解决方案


如果您检查页面并查看“网络”选项卡,您可以看到为获取数据而进行的 api 调用。结束数字是今天的最后一毫秒。一开始有一些垃圾,但其余的响应是 JSON。您必须弄清楚类别编号的含义。也许某处有api的文档。

library(magrittr)
link <- "https://transparencyreport.google.com/transparencyreport/api/v3/"
parms <- paste0("europeanprivacy/siteinfo/urlsbycontenttype?start=1453420800000&end=", 
                1000 * ((Sys.Date() + 1) %>% as.POSIXct() %>% as.numeric()) - 1)
page <- httr::GET(paste0(link, parms))
data <- page %>% httr::content(as = "text") %>% 
  substr(., regexpr("\\[\\[.*\\]\\]", .), .Machine$integer.max) %>% 
  jsonlite::fromJSON() %>% .[[1]] %>% .[[2]] %>% as.data.frame()

推荐阅读