首页 > 解决方案 > 使用 POST 方法成功登录后重定向到页面时如何继续

问题描述

我已经使用 R 3.5.2 登录了一个网站,使用 rvest_0.3.4 和 httr_1.4.0 似乎都很顺利,但后来我陷入了一个重定向页面,该页面在浏览器 (Chrome) 上仅可视化在我点击“登录!”按钮几秒钟后。

有问题的步骤似乎是form method="post" input type="hidden"我无法从 R 提交的。

登录 CDP 页面的 URL

登录 <- " https://www.cdp.net/en/users/sign_in "

投资

library(rvest)

user.email <- "my_email"
user.password <- "my_password"

signin.session <- html_session(signin)
signin.form <- html_form(signin.session)[[1]]
filled.signin <- set_values(signin.form, 
                            `user[email]` = user.email, 
                            `user[password]` = user.password)

signed.in <- submit_form(signin.session, filled.signin)
read_html(signed.in) %>% html_node("form")

httr

library(httr)

login <- list(
    `user[email]` = "my_email",
    `user[password]` = "my_password",
    submit = "Login!")

signed.in.post <- POST(signin, body = login, encode = "form", verbose())
http_status(signed.in.post)

content(signed.in.post, as = "parsed")

read_html(signed.in.post$url) %>% html_node("form")

我的目标是访问我的帐户并浏览网站,但我不知道如何通过 R 的重定向页面。

标签: rwindowsweb-scrapingrvesthttr

解决方案


IvanP使用最新的 httr 函数名称更新先前的响应

library(rvest)

signin.session <- session(signin)
signin.form <- html_form(signin.session)[[1]]
filled.signin <- html_form_set(signin.form, 
                   `user[email]` = user.email, 
                   `user[password]` = user.password)

signed.in <- session_submit(signin.session, filled.signin)
redirect.form <- html_form_set(signed.in)[[1]]
redirected <- session_submit(signed.in, redirect.form) 

推荐阅读