user124563
user124563

Reputation: 23

rvest error on form submission

I would like to scrap data from the following webpage:

https://swgoh.gg/u/zozo/collection/180/emperor-palpatine/

When I want to access it, the website requires my login.

Here is my code:

library(rvest)

url <- 'https://swgoh.gg/u/zozo/collection/180/emperor-palpatine/'
session <- html_session(url)

<session> https://swgoh.gg/accounts/login/?next=/u/zozo/collection/180/emperor-palpatine/

Status: 200

Type: text/html; charset=utf-8

Size: 2081

form <- html_form(read_html(url))[[1]]

<form> '<unnamed>' (POST .)

<input hidden> 'csrfmiddlewaretoken': aFuZy6Pxjg10MqdZjis9vjgojDCxa3QT

<input text> 'username':

<input password> 'password':

<button> '<unnamed>

filled_form <- set_values(form,
                          username = "myusername",
                          password = "mypassword")
(result<-submit_form(session, filled_form))

Although my username and password works when I browse normally, I get the following error after running the last line:

Error: Could not find possible submission target.

I have already searched the web for a solution without success.

EDIT : The solution proposed by @Mr Flick did the trick. unfortunately, I get the following warning message :

Submitting with '<unnamed>'

Warning message:

In request_POST(session, url = url, body = request$values, encode => request$encode, : Forbidden (HTTP 403).

result gives :

<session> https://swgoh.gg/accounts/login/

Status: 403

Type: text/html; charset=utf-8

Size: 989

Upvotes: 2

Views: 1441

Answers (1)

MrFlick
MrFlick

Reputation: 206197

The code that rvest uses to determine how to submit the form seems to be getting tripped up. it's not recognizing the generic "button" as the submit button. You can fool it in this case with

form$fields[[4]]$type <- "button"
filled_form <- set_values(form,
                          username = "myusername",
                          password = "mypassword")
submit_form(session, filled_form)

Upvotes: 4

Related Questions