Очистка данных с нескольких страниц с помощью rvest - выпуск со списком - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь собрать данные из таблицы, и мне удалось объединить вывод. Код работает для одной страницы, но я не могу использовать то же самое для нескольких страниц. Запутался, как использовать его для списков. Я добавил несколько URL в векторную ссылку.

require(tibble)
require(purrr)
require(rvest)

my_url <- c("https://www.airlinequality.com/airline-reviews/ab-aviation/page/1/?sortby=post_date%3ADesc&pagesize=100
", "https://www.airlinequality.com/airline-reviews/ab-aviation/page/2/?sortby=post_date%3ADesc&pagesize=100
", "https://www.airlinequality.com/airline-reviews/ab-aviation/page/3/?sortby=post_date%3ADesc&pagesize=100
", "https://www.airlinequality.com/airline-reviews/ab-aviation/page/4/?sortby=post_date%3ADesc&pagesize=100
")

count_stars_in_cell <- function(cell)
{
  html_children(cell) %>% 
    html_attr("class")  %>%
    equals("star fill") %>% 
    which               %>% 
    length
}

get_ratings_each_review <- function(review) 
{
  review                             %>%
    html_nodes(".review-rating-stars") %>%
    lapply(count_stars_in_cell)        %>%
    unlist
}

all_tables <- read_html(my_url)      %>%
  html_nodes("table")

reviews <- lapply(all_tables, html_table)

ratings <- lapply(all_tables, get_ratings_each_review)

for (i in seq_along(reviews))
{
  reviews[[i]]$X2[reviews[[i]]$X2 == "12345"] <- ratings[[i]]
}

merged = Reduce(function(...) merge(..., all=T, by= "X1"), reviews)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...