Ошибка в doc_parse_file с использованием rvest для очистки нескольких страниц - PullRequest
1 голос
/ 17 июня 2020

Я пытаюсь очистить ссылки с нескольких страниц веб-форума и получаю сообщение об ошибке, которое я не знаю, как исправить.

Я пробовал следующее, используя rvest и мурлыкает

pages <- c("https://www.immigrationboards.com/eea-route-applications/page") %>%
  paste0(1:18000) %>%
  paste0(c(".html"))

i<-1
pages.subset<-pages[1:(i+49)==(i+49)]
pages.subset<-as_data_frame(pages.subset)

scrape_links<-function(pages.subset){read_html(pages.subset) %>% html_node(".topictitle") %>% html_attr('href')}
links<-map_df(pages.subset, scrape_links)

Однако я получил это сообщение об ошибке

Ошибка в doc_parse_file (con, encoding = encoding, as_ html = as_ html, options = options): Ожидается одиночное строковое значение: [type = character; протяженность = 360].

Есть ли у кого-нибудь идеи, как это решить?

1 Ответ

0 голосов
/ 25 июня 2020

Хотя я не уверен на 100%, что вызвало ошибку, кажется, что передача всего data.frame в виде списка в команде map_df взорвала ситуацию. Я изменил ваш код:

library(tidyverse)
library(rvest)

pages <- c("https://www.immigrationboards.com/eea-route-applications/page") %>%
  paste0(1:18000) %>%
  paste0(c(".html"))

scrape_links <- function(url) {
  out <- url %>%
    read_html() %>%
    html_node(".topictitle") %>%
    html_attr("href")
  return(out)
}

links <- tibble(page = pages[1:(50) == (50)]) %>%
  mutate(url = map_chr(page, scrape_links))

head(links)
# # A tibble: 6 x 2
#   page                                                                  url                                                                                                            
#   <chr>                                                                 <chr>                                                                                                          
# 1 https://www.immigrationboards.com/eea-route-applications/page50.html  https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
# 2 https://www.immigrationboards.com/eea-route-applications/page100.html https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
# 3 https://www.immigrationboards.com/eea-route-applications/page150.html https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
# 4 https://www.immigrationboards.com/eea-route-applications/page200.html https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
# 5 https://www.immigrationboards.com/eea-route-applications/page250.html https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
# 6 https://www.immigrationboards.com/eea-route-applications/page300.html https://www.immigrationboards.com/eea-route-applications/covid-19-home-office-immigration-guidance-t299291.html
...