如何使用 rvest 在 R 中抓取这个网站?

How to scrape this website in R using rvest?

我正在尝试使用 RVest 抓取此网站:https://www.camara.cl/legislacion/sesiones_sala/sesiones_sala.aspx

请注意,网站加载速度很快,但数据需要一些时间才能显示。我意识到,虽然内容在 Web 浏览器检查器中显示为 html 文本,但使用 rvest.

抓取时节点显示为空
library(dplyr)
library(rvest)

camara <- "https://www.camara.cl/legislacion/sesiones_sala/sesiones_sala.aspx" %>% 
  session()


camara %>% 
  html_elements("h2")

camara %>% 
  html_elements(".box-proyecto") 

camara %>% 
  html_elements("#trabajo-en-sala") %>% 
  html_elements("#info-tabs") %>% 
  html_elements("#ajax-container") %>% 
  html_elements("pnlTablaOrdinaria")

所有这些都应该 return 至少有一些文本内容,但它们看起来是空的。

我尝试使用 V8 来解释 javascript according to these instructions,但该站点似乎仅将 JS 用于界面元素,而不用于数据检索。

我也尝试通过 PhantomJS following these instructions 运行 它,但由于权限问题无法 运行 脚本。

看来我需要对数据执行 GET 请求,但是 URL 我在网站的代码中发现 return 什么都没有:https://www.camara.cl/legislacion/sesiones_sala/tabla.aspx?_=1628291424652

我无法使用 RSelenium,因为我正在通过无头服务器进行远程工作。

您需要从初始 url 中选取一个会话 cookie (ASP.NET_SessionId)。您可以为此使用 session,例如:

library(rvest)
library(magrittr)

r <- session('https://www.camara.cl/legislacion/sesiones_sala/sesiones_sala.aspx') %>% 
  session_jump_to('https://www.camara.cl/legislacion/sesiones_sala/tabla.aspx')

tables <- r %>% read_html() %>% html_table()