用 rvest 抓取 Javascript

Scraping Javascript with rvest

我一直在尝试从另存为 javascript 的网站上抓取投票时间序列。到目前为止,我在选择 "circle" 节点后得到一个空列表。下面的代码,任何一点都非常感谢。

library(rvest)
library(V8)

url = 'https://www.politico.eu/europe-poll-of-polls/belgium/'

dta = read_html(url) %>% 
  html_node('svg') %>% 
  html_node('g') %>% 
  html_node('circle')

其实很简单。数据来自 json 端点,您可以在网络选项卡中找到

library(jsonlite)

data <- jsonlite::read_json('https://www.politico.eu/wp-json/politico/v1/poll-of-polls/BE-parliament')
info <- data$polls

您可以转换为数据框。例如:

library(purrr)

df <- map_df(info, function(x) {

  data.frame(date = x$`date`,
             party = x$parties,
             stringsAsFactors=FALSE)
})

names(df) <- gsub( 'party.','',names(df))

您可以随时转置并进行任何其他您想要的变换等,例如

df <- t(df)