问题 为什么'错误:长度(网址)== 1不是TRUE'与rvest网络抓取


我正在尝试废弃网络数据,但第一步需要登录。我已成功登录其他网站,但我在这个网站上发生了一个奇怪的错误。

library("rvest")
library("magrittr")    

research <- html_session("https://www.fitchratings.com/")

signin <- research %>%
  html_nodes("form") %>%
  extract2(1) %>%
  html_form() %>%
  set_values (
    'userName' = "abc",
    'password' = "1234"
     )

research <- research %>%
  submit_form(signin)

当我运行'submit_form'行时,我收到以下错误:

> research <- research %>%
+ submit_form(signin)
Submitting with '<unnamed>'
Error: length(url) == 1 is not TRUE

使用未命名提交是正确的b / c没有为登录按钮分配名称。任何帮助赞赏!


9216
2018-03-17 03:10


起源

这个例子仍然有效吗?当我跑的时候,我明白了 Error: Unknown field names: userName, password。 - WhiteViking
此外,似乎这个问题是由于rvest中的一个错误而被rvest包作者解决了: github.com/hadley/rvest/issues/73 不幸的是,自那以后,没有正式版的rvest(带有修复版)。也许可以从github手动安装最新版本。 - WhiteViking


答案:


我遇到了同样的问题。我跳了几圈就得到了rvest的开发版本,现在它正在顺利运行。这是我如何去做的:

首先是第一件事。您需要安装RTools。确保R已关闭。这可以在这里找到: https://cran.r-project.org/bin/windows/Rtools/。 有关安装Rtools的信息可以在这里找到(如果你使用的是Windows):github.com/stan-dev/rstan/wiki/Install-Rtools-for-Windows

启动R,然后安装库“httr”和“Rcpp”,如果你还没有它们。

安装“devtools”和相关的github安装程序。可以找到信息 这里,但我会从链接的回购中快速总结一下。

视窗:

install.packages("devtools")
library(devtools)
build_github_devtools()

#### Restart R before continuing ####
install.packages("devtools.zip", repos = NULL, type = "source")

# Remove the package after installation
unlink("devtools.zip")

Mac / Linux中

devtools::install_github("hadley/devtools")

现在,运行最后的步骤。

library(httr)
library(Rcpp)
library(devtools)
install_github("hadley/rvest")

你现在应该可以跑了 submit_form(session, form) 并没有遇到错误

Submitting with 'xxxx'
Error: length(url) == 1 is not TRUE

9
2017-09-15 21:39



注意:仅在Windows上需要Rtools。在Mac和Linux上,安装开发包很简单(这是一个命令,如你的答案所示)。事实上,我已经很久没有使用CRAN,我从Github安装了所有东西。 - Konrad Rudolph