Я собираю данные с веб-сайта, и мне нужно реализовать для l oop функцию, которая позволит мне извлекать ссылки на несколько страниц индекса. Следующий код позволяет мне собирать данные с одной индексной страницы:
library(tidyverse)
library(rvest)
ptt.url <- "https://www.ptt.cc/bbs/Gossiping"
ptt.url
gossiping.session <- html_session(ptt.url)
gossiping.form <- gossiping.session %>%
html_node("form") %>%
html_form
gossiping <- submit_form( #starts an html session
session = gossiping.session,
form = gossiping.form,
submit = "yes"
)
gossiping
page.latest <- gossiping %>%
html_nodes("a") %>% # extract all <a> elements
html_attr("href") %>% # extract the attributes `href`
str_subset("index[0-9]{2,}\\.html") %>% # find the `href` with the index number
str_extract("[0-9]+") %>% # extract the number
as.numeric()
page.latest
link <- str_c(ptt.url, "/index", page.latest, ".html")
links.article <- gossiping %>%
jump_to(link) %>% # move session to the most recent page
html_nodes("a") %>% # extract article <a>
html_attr("href") %>% # extract article `<href>` attributes
str_subset("[A-z]\\.[0-9]+\\.[A-z]\\.[A-z0-9]+\\.html") %>% # extract links
str_c("https://www.ptt.cc",.)
links.article
Это устанавливает самую последнюю страницу на форуме, а затем извлекает ссылки на этой странице. Я хочу извлечь все ссылки с нескольких страниц. Я могу установить диапазон в объекте '' 'link' '' следующим образом:
link <- str_c(ptt.url, "/index", (page.latest-2):(page.latest), ".html")
Однако последняя и самая неприятная часть для меня - это то, что у меня есть функция, в которую мне нужно ввести для l oop:
extract_art_links <- function(index_page, session){
links.article <- session %>%
jump_to(index_page) %>%
html_nodes("a") %>%
html_attr("href") %>%
str_subset("[A-z]\\.[0-9]+\\.[A-z]\\.[A-z0-9]+\\.html") %>%
str_c("https://www.ptt.cc",.)
return(links.article)
}
Это то, что я думаю, мне нужно сделать. Любой берущий?