我正在嘗試抓取該網站的整個表格:https ://sineb.mineducacion.gov.co/bcol/app
我需要過濾器的所有記錄:Departamento:=BOGOTá, DC
我可以在第一頁獲得表格,但不能在第 2 到 20 頁獲得表格的其余部分。
library(tidyverse)
library(rvest)
sineb <- html_session("https://sineb.mineducacion.gov.co/bcol/app")
my_form <- html_form(sineb)[[1]]
dept <- my_form$fields$departamento$options[-1]
bogota <- dept[grep("D.C", names(dept))]
my_form <- set_values(my_form, 'departamento' = bogota[1])
sineb <- submit_form(sineb, my_form, "consultar")
df_list <- html_table(sineb, T, T, T)
table <- as.data.frame(df_list[[4]])
謝謝!
uj5u.com熱心網友回復:
首先讓我注意我使用了更新的語法rvest(請參閱在 rvest 1.0.0 中重命名的函式)
您的 ansatz 非常好,并且使用 using session_follow_link,可以通過回圈瀏覽頁面并使用以下方式選擇鏈接輕松完成解決方案xpath:
library(tidyverse)
library(rvest)
sineb <- session("https://sineb.mineducacion.gov.co/bcol/app")
my_form <- html_form(sineb)[[1]]
dept <- my_form$fields$departamento$options[-1]
bogota <- dept[grep("D.C", names(dept))]
my_form <- html_form_set(my_form, 'departamento' = bogota[1])
sineb <- session_submit(sineb, my_form, "consultar")
df_list <- html_table(sineb, T, T, T)
results <- as.data.frame(df_list[[4]])
for (next_page in 2:20) {
sineb <- session_follow_link(sineb, xpath = paste0("//a[text() = '", next_page, "']"))
df_list <- html_table(sineb, T, T, T)
results <- rbind(results, as.data.frame(df_list[[4]]))
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/490642.html
上一篇:過濾器不更改URL時抓取網頁
