使用 POST 方法成功登录后重定向到页面时如何继续
How to proceed when redirected to page after successful sign in with POST method
我已经使用 R 3.5.2 登录了一个网站,使用 rvest_0.3.4 和 httr_1.4.0 似乎都很顺利,但后来我陷入了重定向在我点击按钮 "Login!" 后,在浏览器 (Chrome) 上仅显示几秒钟的页面。
有问题的步骤似乎是 form method="post" input type="hidden"
,我无法从 R 提交。
CDP页面登录URL
登录 <- "https://www.cdp.net/en/users/sign_in"
rvest
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 的重定向页面。
已解决!
这是一个非常简单直观的解决方案,我只需要提交重定向页面的 form method="post" input type="hidden"
,即在 signed.in
会话中遇到的页面。
我用 rvest
解决了它,但我认为 httr
也同样容易,这是我使用的代码:
library(rvest)
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)
redirect.form <- html_form(signed.in)[[1]]
redirected <- submit_form(signed.in, redirect.form)
最后这个对象redirected
是一个session-class object
,基本上是登录网站后可以正常浏览的页面
如果有人有更短、更有效、更elegant/sexy/charming的解决方案可以继续...请不要犹豫,分享它。
我是网络抓取的绝对初学者,我很想了解更多有关这些操作的信息!
谢谢
使用最新的 httr 函数名称更新 IvanP
之前的响应
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)
我已经使用 R 3.5.2 登录了一个网站,使用 rvest_0.3.4 和 httr_1.4.0 似乎都很顺利,但后来我陷入了重定向在我点击按钮 "Login!" 后,在浏览器 (Chrome) 上仅显示几秒钟的页面。
有问题的步骤似乎是 form method="post" input type="hidden"
,我无法从 R 提交。
URL
登录 <- "https://www.cdp.net/en/users/sign_in"
rvest
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 的重定向页面。
已解决!
这是一个非常简单直观的解决方案,我只需要提交重定向页面的 form method="post" input type="hidden"
,即在 signed.in
会话中遇到的页面。
我用 rvest
解决了它,但我认为 httr
也同样容易,这是我使用的代码:
library(rvest)
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)
redirect.form <- html_form(signed.in)[[1]]
redirected <- submit_form(signed.in, redirect.form)
最后这个对象redirected
是一个session-class object
,基本上是登录网站后可以正常浏览的页面
如果有人有更短、更有效、更elegant/sexy/charming的解决方案可以继续...请不要犹豫,分享它。
我是网络抓取的绝对初学者,我很想了解更多有关这些操作的信息!
谢谢
使用最新的 httr 函数名称更新 IvanP
之前的响应
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)