Добавить имя в set_values ​​с помощью rvest

Я пытаюсь очистить веб-сайт это, я написал код для входа в систему с помощью rvest, но каждый раз, когда страница обновляется, имя формы меняется.

library(rvest)

loginpage <- "https://demo.glpi-project.org/"

pagesession <- html_session(loginpage)

pageform <- html_form(pagesession)[[1]]

formfill <- set_values(pageform, fielda5bd99dcd2eaa8 = "****", 
fieldb5bd99dcd2eaad = "****")

successlogin <- submit_form(pagesession,formfill)

fielda5bd99dcd2eaa8 и fieldb5bd99dcd2eaad - это имя поля ввода, которое изменяется при каждом обновлении.

прямо сейчас я меняю поле имени каждый раз, когда запускаю скрипт

0
0
68
1

Ответы 1

Надеюсь, этого достаточно, чтобы направить вас в правильном направлении:

library(rvest)
library(httr)
library(dplyr)

httr::GET(
  "https://demo.glpi-project.org/"
) -> res

pg <- httr::content(res)

form <- html_nodes(pg, "form")
inputs <- html_nodes(form, "input")

data_frame(
  id = html_attr(inputs, "id"),
  name = html_attr(inputs, "name"),
  value = html_attr(inputs, "value")
)
## # A tibble: 6 x 3
##   id             name                value                           
##   <chr>          <chr>               <chr>                           
## 1 login_name     fielda5bd9bf41b7af9 NA                              
## 2 login_password fieldb5bd9bf41b7afe NA                              
## 3 NA             auth                local                           
## 4 login_remember fieldc5bd9bf41b7aff NA                              
## 5 NA             submit              Post                            
## 6 NA             _glpi_csrf_token    ea1aff0b53753e14a76077bd77fb21c2

Спасибо, сэр, но я не могу объединить ваш код с моим. Я получаю неизвестную ошибку поля, потому что мне нужно установить такие значения, как этот formfill <- set_values(inputs, df$name[1] = "****", df$name[2] = "****"), и я думаю, что это неверно, потому что вы не можете поместить переменную вместо аргумента по умолчанию. Подскажите, пожалуйста, как мне совместить ваш код с моим ...

geekzeus 01.11.2018 09:36

Я бы посоветовал не полагаться на rvest и изучить, как использовать httr::GET() и httr::POST() для более идиоматической публикации форм и инструментовки веб-приложений.

hrbrmstr 01.11.2018 13:46

Другие вопросы по теме