Die Funktion html_nodes()
schlägt wie folgt fehl, wenn sie als ausführbares RScript ausgeführt wird, ist aber erfolgreich, wenn sie interaktiv ausgeführt wird. Weiß jemand, was in den Läufen anders sein könnte?rvest, html_nodes() error: kann den Typ 'environment' nicht in einen Vektor des Typs 'list' einbinden. Fehler in RScript, funktioniert in Sitzung
Der interaktive Lauf wurde mit einer neuen Sitzung ausgeführt und die Quellanweisung war der erste Lauf.
$ ./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
Doch gelingt es, wenn als source()
interaktiv ausführen:
> 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
Danke, Matt
Ich habe rvest nicht verwendet, aber haben ähnliche Probleme oft erlebt mit 'RSelenium'. Es wird wahrscheinlich die Rohrleitung durchbrechen, aber Sie möchten vielleicht mit 'Sys.sleep (5)' erkunden. Ocassionally musste ich zu 'Sys.sleep (15)' gehen und sogar 20, um die Seite zu erlauben zu laden. – PavoDive
Versuchen Sie 'library (methods)' am Anfang Ihres Skripts hinzuzufügen. – hadley
@hadley: Hinzufügen von 'library (Methoden)' hat funktioniert. Ich würde es akzeptieren, wenn es eine Lösung wäre. Und danke dir. – mpettis