У меня есть список ссылок в DF, на котором я хотел бы запустить функцию для извлечения данных из каждого.
Библиотеки и данные:
library(rvest)
library(tidyverse)
link_df <- tribble(~title, ~episode, ~link,
"a", "1", "https://www.backlisted.fm/episodes/1-j-l-carr-a-month-in-the-country",
"b", "2", "https://www.backlisted.fm/episodes/2-jean-rhys-good-morning-midnight",
"c", "3", "https://www.backlisted.fm/episodes/3-david-nobbs-1")
Я пробовал взять части из this и this , но я где-то пропустил шаг:
recs_extract <- function(df){
pages <- df %>% map(read_html, url = link)
data <- pages %>%
map_dfr(. %>%
html_nodes(css = "ul li") %>%
html_text() %>%
tibble(title = .) %>%
slice(12:n()-2) %>%
separate(col = title,
into = c("author", "titles"),
sep = "-" ) %>%
separate(titles,
into = c(paste("books", 1:15)),
sep = ",",
extra = "drop") %>%
mutate(across(where(is.character), str_trim)) %>%
janitor::remove_empty(which = "cols") %>%
pivot_longer(cols = contains("books"),
names_to = NULL,
values_to = "Title",
values_drop_na = TRUE)
)
}
Эта функция работает с одной ссылкой:
link_df$link[1] %>% map(recs_extract)
[[1]]
# A tibble: 15 x 2
author Title
<chr> <chr>
1 J L Carr A Month in the Country
2 J L Carr Harpole and Foxberrow General Publishers
3 J L Carr The Battle of Pollocks Crossing
4 Vasily Grossman Life and Fate
5 Mr Bingo Hate Mail
6 William S Burroughs Naked Lunch
7 Nancy Mitford Love in a Cold Climate
8 J Arthur Gibbs A Cotswold Village
9 Giuseppe Tomasi di Lampedusa The Leopard
10 W N P Barbellion Journal of a Disappointed Man
11 Lissa Evans Their Finest Hour and a Half
12 Lissa Evans Crooked Heart
13 Byron Rogers The Last Englishman
14 Andy Miller Tilting at Windmills
15 William Golding Darkness Visible
Должен ли я сначала помещаться во вложенный df? Как переходить по каждой ссылке и хранить?
#doesn't work
link_df %>%
group_by(title) %>%
nest() %>%
mutate(data = map(data, recs_extract, link))
Спасибо, извиняюсь за длинный пост.