r - 当 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"
返回无效。
解决方案
如果您检查页面并查看“网络”选项卡,您可以看到为获取数据而进行的 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()
推荐阅读
- excel-formula - 使用 Excel 公式将第二个数字与文本分开
- ios - 使用firebase在ios中推送通知
- c# - System.InvalidOperationException 与表单验证
- python - 简单的 Python 控制台程序提问
- hibernate - 原生图像构建过程在 Quarkus 中被冻结
- java - 程序流程问题
- spring-webflux - 如果在 Project Reactor 中使用 publishOn,订阅不会打印出任何日志
- xml - Xsl-transformation with grouping,获取祖先属性值
- python - python selenium bs4,不是从 https url 而是从带有服务器目录的 src 下载图像
- matlab - 如何在 Matlab 中从高斯 Copula 生成条件分布?