Funkcja html_nodes()
kończy się niepowodzeniem w następujący sposób po uruchomieniu jako wykonywalny RScript, ale powiedzie się, gdy uruchomi się interaktywnie. Czy ktoś wie, co może być innego w biegach?rvest, html_nodes() błąd: nie można przymusić typu 'environment' do wektora typu 'list'. Fails RScript, działa w sesji
Uruchomienie interaktywne zostało uruchomione z nową sesją, a instrukcja źródłowa była pierwszym uruchomieniem.
$ ./test-pdp.R
>
> ################################################################################
> # Setup
> ################################################################################
> suppressPackageStartupMessages(library(plyr))
> suppressPackageStartupMessages(library(dplyr))
> suppressPackageStartupMessages(library(stringr))
> suppressPackageStartupMessages(library(rvest))
> suppressPackageStartupMessages(library(httr))
>
>
> read_html("http://google.com") %>%
+ html_nodes("div") %>%
+ length()
Error in as.vector(x, "list") :
cannot coerce type 'environment' to vector of type 'list'
Calls: %>% ... <Anonymous> -> lapply -> as.list -> as.list.default
Execution halted
Mimo to udaje, gdy uruchamiane jako source()
Interaktywnie:
> source("/Users/a6001389/Documents/projects/hottest-deals-page-scrape/src/test-pdp.R", echo=TRUE)
> #!/usr/bin/RScript
> options(echo=TRUE)
> ################################################################################
> # Setup
> ####################################################### .... [TRUNCATED]
> suppressPackageStartupMessages(library(dplyr))
> suppressPackageStartupMessages(library(stringr))
> suppressPackageStartupMessages(library(rvest))
> suppressPackageStartupMessages(library(httr))
> read_html("http://google.com") %>%
+ html_nodes("div") %>%
+ length()
[1] 17
Dziękuję Matt
Nie używałem rvest, ale doświadczył podobnych problemów wielokrotnie z 'RSelenium'. Prawdopodobnie przerwie to orurowanie, ale możesz chcieć odkryć za pomocą 'Sys.sleep (5)'. Co jakiś czas musiałem przejść do 'Sys.sleep (15)', a nawet 20, aby umożliwić załadowanie strony. – PavoDive
Spróbuj dodać 'library (methods)' na początku skryptu – hadley
@hadley: dodanie 'biblioteki (metody)' zadziałało. Zgodziłbym się, gdyby to było rozwiązanie. I dziękuję. – mpettis