rvest Eroare în open.connection(x, „rb”) : Eroare HTTP 404 (Programare, R, Rvest)

Teby a intrebat.

Am încercat să răzuiesc un site web pentru a extrage datele din mai multe pagini folosind rvest și purrr. dar de fiecare dată când execut codul apare „Error in open.connection(x, „rb”) : HTTP error 404.”.

url <- "http://books.toscrape.com/catalogue/page-%d"

map_df(1:10, function(i){ 
  
  page <- read_html(sprintf(url, i))
   cat(".")
  
  booksdf <- data.frame(safely( title <- html_nodes(page, "h3, #title") %>% html_text(),
                       price <- html_nodes(page, ".price_color") %>% html_text() %>% gsub("£", "", .),
                       rating <- html_nodes(page, ".star-rating") %>% html_attrs() %>% str_remove("star-rating") %>%str_replace_all(c("One" = "1", "Two" = "2", "Three" = "3", "Four" = "4", "Five" = "5")) %>%  as.numeric()
                       )
                      
  )
  
  
} 
)
Error in open.connection(x, "rb") : HTTP error 404.

Comentarii

  • Și cum este aceasta o eroare de codare R? –  > Por Rui Barradas.
  • O eroare 404 indică faptul că pagina pe care ați solicitat-o nu a fost găsită pe server. Vă sugerez să verificați să vă asigurați că construiți URL-ul corect. Dacă mă duc la http://books.toscrape.com/catalogue/page-2 în browserul meu primesc o eroare 404 la fel ca R. Ați uitat să adăugați partea „.html” la URL –  > Por MrFlick.
  • Mulțumesc @MrFlick că a funcționat. dar când execut codul apare o altă eroare „Error in type(pattern) : argument „pattern” is missing, with no default” Nu am găsit niciun argument lipsă (fiecare cod rulează perfect în afara map_df). –  > Por Teby.
1 răspunsuri
Ronak Shah

Putem crea adresele URL pentru a răzui și apoi să folosim map_df pentru a lega cadrele de date împreună.

library(tidyverse)
library(rvest)

url <- "http://books.toscrape.com/catalogue/page-"
pages <- paste0(url, 1:10, ".html")

map_df(pages, function(i){ 
     page <- read_html(i)
     data.frame(title = html_nodes(page, "h3, #title") %>% html_text(),
                price = html_nodes(page, ".price_color") %>% html_text() %>% 
                        gsub("£", "", .),
                rating = html_nodes(page, ".star-rating") %>% html_attrs() %>% 
                         str_remove("star-rating") %>%
                         str_replace_all(c("One" = "1", "Two" = "2", 
                         "Three" = "3", "Four" = "4", "Five" = "5")) %>%  
                          as.numeric())
})


#                                            title price rating
#1                               A Light in the ... 51.77      3
#2                               Tipping the Velvet 53.74      1
#3                                       Soumission 50.10      1
#4                                    Sharp Objects 47.82      4
#5                     Sapiens: A Brief History ... 54.23      5
#6                                  The Requiem Red 22.65      1
#7                     The Dirty Little Secrets ... 33.34      4
#8                          The Coming Woman: A ... 17.93      3
#.....

Tags:,