【问题标题】:R scraping when SelectorGadget cannot find valid paths当 SelectorGadget 找不到有效路径时 R 抓取
【发布时间】:2021-10-02 22:43:39
【问题描述】:

我尝试从此处的交互式饼图中抓取每个国家/地区的数据: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" 返回 void。

【问题讨论】:

    标签: r web-scraping


    【解决方案1】:

    如果您检查该页面并查看“网络”选项卡,您可以看到为获取数据而进行的 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-05
      相关资源
      最近更新 更多