Использование rvest для входа на веб-страницу с всплывающим входом - PullRequest
1 голос
/ 30 марта 2019

Я хотел бы войти на веб-страницу с всплывающим окном входа. Эта статья входит в Stack Overflow, веб-страницу с видимой формой входа. Как я могу использовать rvest для входа на сайты, которые не имеют видимых форм входа? Например, на веб-сайте Washington Post есть поле для входа в правом верхнем углу страницы. После нажатия появляется форма, в которую можно войти.

library(rvest)

url <- 'https://www.rotary.org/myrotary/en'
url2 <- 'https://stackoverflow.com/users/login?ssrc=head&returnurl=http%3a%2f%2fstackoverflow.com%2f'
url3 <- 'https://www.washingtonpost.com/?noredirect=on'

Если я получу структуру форм на странице входа в StackOverflow,

pg_session <- html_session(url2)
html_form(pg_session) %>% str
List of 2
 $ :List of 5
  ..$ name   : chr "search"
  ..$ method : chr "GET"
  ..$ url    : chr "/search"
  ..$ enctype: chr "form"
  ..$ fields :List of 2
  .. ..$ q        :List of 7
  .. .. ..$ name    : chr "q"
  .. .. ..$ type    : chr "text"
  .. .. ..$ value   : chr ""
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ <unnamed>:List of 7
  .. .. ..$ name    : chr "<unnamed>"
  .. .. ..$ type    : chr "submit"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "button"
  .. ..- attr(*, "class")= chr "fields"
  ..- attr(*, "class")= chr "form"
 $ :List of 5
  ..$ name   : chr "login-form"
  ..$ method : chr "POST"
  ..$ url    : chr "/users/login?ssrc=head&returnurl=http%3a%2f%2fstackoverflow.com%2f"
  ..$ enctype: chr "form"
  ..$ fields :List of 7
  .. ..$ fkey         :List of 7
  .. .. ..$ name    : chr "fkey"
  .. .. ..$ type    : chr "hidden"
  .. .. ..$ value   : chr "d5f8c65b7d92b368b4b58e43e59fd9d82cb4436bac4a6d430771d50b85e771aa"
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ ssrc         :List of 7
  .. .. ..$ name    : chr "ssrc"
  .. .. ..$ type    : chr "hidden"
  .. .. ..$ value   : chr "head"
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ email        :List of 7
  .. .. ..$ name    : chr "email"
  .. .. ..$ type    : chr "email"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ password     :List of 7
  .. .. ..$ name    : chr "password"
  .. .. ..$ type    : chr "password"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ submit-button:List of 7
  .. .. ..$ name    : chr "submit-button"
  .. .. ..$ type    : NULL
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "button"
  .. ..$ oauth_version:List of 7
  .. .. ..$ name    : chr "oauth_version"
  .. .. ..$ type    : chr "hidden"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..$ oauth_server :List of 7
  .. .. ..$ name    : chr "oauth_server"
  .. .. ..$ type    : chr "hidden"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..- attr(*, "class")= chr "fields"
  ..- attr(*, "class")= chr "form"

, я могу четко определить, где заполнить мой адрес электронной почты и пароль. Однако я не могу найти его в структуре форм на домашней странице Washington Post, что затрудняет вызов нужной мне формы.

pg_session <- html_session(url3)
html_form(pg_session) %>% str
List of 1
 $ :List of 5
  ..$ name   : chr "search-form"
  ..$ method : chr "GET"
  ..$ url    : chr "//www.washingtonpost.com/newssearch/"
  ..$ enctype: chr "form"
  ..$ fields :List of 1
  .. ..$ query:List of 7
  .. .. ..$ name    : chr "query"
  .. .. ..$ type    : chr "text"
  .. .. ..$ value   : NULL
  .. .. ..$ checked : NULL
  .. .. ..$ disabled: NULL
  .. .. ..$ readonly: NULL
  .. .. ..$ required: logi FALSE
  .. .. ..- attr(*, "class")= chr "input"
  .. ..- attr(*, "class")= chr "fields"
  ..- attr(*, "class")= chr "form"

Мой конкретный случай - войти на этот сайт , однако всплывающий журнал "Вашингтон пост" кажется достаточно похожим, что это будет та же самая процедура. Как я могу вызвать эти всплывающие логины?

* Я не слишком знаком с html, поэтому, если есть какие-то более подходящие термины или способы их формулировки, не стесняйтесь меня поправлять.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...