Войдите на веб-сайт (billboard.com) с целью очистки с помощью R, когда вход выполняется через всплывающее окно. - PullRequest
2 голосов
/ 04 апреля 2020

Я хочу удалить некоторые "профессиональные" данные билборда, для доступа к которым требуется премиум аккаунт билборда. У меня уже есть один, но, очевидно, мне нужно войти на сайт билборда через R, чтобы иметь возможность удалить эти данные.
У меня нет проблем с такими вещами с обычными страницами входа (например, stackoverflow):

##### Stackoverflow login #####
# Packages installation and loading ---------------------------------------

if (!require("pacman")) install.packages("pacman")
pacman::p_load(rvest,dplyr,tidyr)
packages<-c("rvest","dplyr","tidyr")
lapply(packages, require, character.only = TRUE)


#Address of the login webpage
login_test<-"https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2f"

#create a web session with the desired login address
pgsession_test<-html_session(login_test)
pgform_test<-html_form(pgsession_test)[[2]]  #in this case the submit is the 2nd form
filled_form_test<-set_values(pgform_test, email="myemail", password="mypassword")

filled_form_test$fields[[5]]$type <- "button"

submit_form(pgsession_test, filled_form_test)

Проблема с веб-сайтом рекламного щита заключается в том, что вход в систему осуществляется с помощью нажимаемой кнопки «зарегистрироваться» в заголовке страницы, которая вызывает всплывающее окно, позволяющее ввести адрес электронной почты и пароль, что позволяет пользователю войти в систему.
До сих пор я пытался угадать, где находится форма входа в систему на выводе html страницы рекламного щита, поскольку это не очевидно, но я даже не думаю, он действительно появляется, и я думаю, что для извлечения кода html из всплывающего окна windows может потребоваться определенный c процесс.
Вот что я сделал до сих пор:

##### Billboard scraping #####
# Packages installation and loading ---------------------------------------

if (!require("pacman")) install.packages("pacman")
pacman::p_load(rvest,dplyr,tidyr)
packages<-c("rvest","dplyr","tidyr")
lapply(packages, require, character.only = TRUE)



# Session setup (required to scrap restricted access web pages) -----------
login<-"https://www.billboard.com/myaccount"

#create a web session with the desired login address
pgsession<-html_session(login)
pgform<-html_form(pgsession)[[2]]  
pgform$fields[[2]]$value <- 'myemailaddress'
pgform$fields[[1]]$value <- 'mypassword'




filled_form<-set_values(pgform)

fake_submit_button <- list(name = NULL,
                           type = "submit",
                           value = NULL,
                           checked = NULL,
                           disabled = NULL,
                           readonly = NULL,
                           required = FALSE)
attr(fake_submit_button, "class") <- "input"
filled_form[["fields"]][["submit"]] <- fake_submit_button

# filled_form$fields[[3]]$type <- "button"
submit_form(pgsession, filled_form)

Возвращаемая ошибка:
Предупреждающее сообщение: В request_GET (сеанс, url = url, query = request $ values, ...): не найдено (HTTP 404).

Что я понимаю просто как результат Это означает, что я не использую правильную форму входа, и я подозреваю, что она не будет доступна в моем выводе html (указанному pgform <-html_form (pgsession) [[2]] </em> в приведенном выше коде).
Обратите внимание, что я также пытался использовать pgform <-html_form (pgsession) [[1]] </em>.
Заранее благодарю за помощь.

...