我正在尝试使用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")
所有这些都应该至少返回一些文本内容,但它们显示为空。
我尝试使用V8
根据这些说明来解释javascript,但该网站似乎仅将JS用于界面元素,而不是用于数据检索。
我也试图通过PhantomJS
按照这些说明运行,但由于权限问题无法运行脚本。
似乎我需要对数据执行GET请求,但是我在网站代码中找到的URL没有返回任何内容: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()