中工作html_nodes()
函數在作爲可執行RScript運行時失敗如下,但在交互式運行時成功。有人知道運行中會有什麼不同嗎?rvest,html_nodes()錯誤:無法將類型'environment'強制爲類型'list'的向量。失敗RScript,在會話
交互式運行使用新的會話運行,源語句是第一次運行。
$ ./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
然而,它成功時,作爲source()
交互方式運行:
> 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
謝謝 馬特
我沒有用過rvest,但與'RSelenium'遇到類似的問題很多次。它可能會破壞管道,但你可能想用'Sys.sleep(5)'來探索。偶爾我不得不去'Sys.sleep(15)'甚至20來允許頁面加載。 – PavoDive
嘗試添加'庫(方法)'到你的腳本開頭 – hadley
@hadley:添加'library(methods)'工作。如果是解決方案,我會接受它。謝謝你。 – mpettis