Подтвердить что ты не робот

Почему "Ошибка: длина (url) == 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 не назначено ни одному имени кнопки входа. Любая помощь ценится!

4b9b3361

Ответ 1

У меня была такая же проблема. Я перепрыгнул через несколько обручей, чтобы запустить dev-версию 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