Verwenden Sie rvest oder httr, um sich bei nicht standardisierten Formularen auf einer Webseite anzumelden.

Ich versuche, rvest zu verwenden, um eine Webseite zu spinnen, für die eine E-Mail- / Kennwortanmeldung in einem Formular erforderlich ist.

rm(list=ls())
library(rvest)

### Trying to sign into a form using email/password 

url       <-"http://www.perfectgame.org/"   ## page to spider
pgsession <-html_session(url)               ## create session
pgform    <-html_form(pgsession)[[1]]       ## pull form from session

set_values(pgform, `ctl00$Header2$HeaderTop1$tbUsername` = "[email protected]") 
set_values(pgform, `ctl00$Header2$HeaderTop1$tbPassword` = "mypassword")

submit_form(pgsession,pgform,submit=`ctl00$Header2$HeaderTop1$Button1`)

Dies gibt mir die folgende Fehlermeldung:

Error in submit_request(form, submit) : 

Objekt 'ctl00 $ Header2 $ HeaderTop1 $ Button1' nicht gefunden

Wenn ich das Formular ohne Angabe des submit-Parameters abschicke, erhalte ich Folgendes:

Submitting with 'ctl00$Header2$HeaderTop1$Button1'
Error in function (type, msg, asError = TRUE)  : <url> malformed

Ich habe auch versucht, die Parameter direkt an httr zu übergeben, wie in dieser Frage erwähnt:Wie kann ich ein einfaches HTML-Formular in R POSTEN?, aber der Parameter "submit" hat die Schaltfläche "submit" weder mit rückwärts gerichteten Anführungszeichen (``) noch ohne Anführungszeichen akzeptiert:

library(httr)

url <- "http://www.perfectgame.org/Rankings/Players/Default.aspx?gyear=2015&num=500"

fd <- list(
    submit = `ctl00$Header2$HeaderTop1$Button1`,
    `ctl00$Header2$HeaderTop1$tbUsername`  = "[email protected]",
    `ctl00$Header2$HeaderTop1$tbPassword`  = "mypassword")

resp<-POST(url, body=fd, encode="form")
content(resp) 

Haben Sie eine Idee, wie ich mich von einer R-Sitzung aus anmelden und die Daten hinter der Anmeldewand erkennen kann?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage