【问题标题】:rvest error on form submission表单提交时出现 rvest 错误
【发布时间】:2018-11-24 16:48:00
【问题描述】:

我想从以下网页抓取数据:

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

当我想访问它时,该网站需要我登录。

这是我的代码:

library(rvest)

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

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

状态:200

类型:文本/html;字符集=utf-8

尺寸:2081

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

'' (POST .)

'csrfmiddlewaretoken':aFuZy6Pxjg10MqdZjis9vjgojDCxa3QT

'用户名':

'密码':

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

虽然我的用户名和密码在我正常浏览时有效,但运行最后一行后出现以下错误:

错误:找不到可能的提交目标。

我已经在网上搜索了一个没有成功的解决方案。

编辑:@Mr Flick 提出的解决方案成功了。不幸的是,我收到以下警告消息:

使用“”提交

警告信息:

在 request_POST(session, url = url, body = request$values, encode => request$encode, : 禁止 (HTTP 403)。

result 给出:

https://swgoh.gg/accounts/login/

状态:403

类型:文本/html;字符集=utf-8

尺寸:989

【问题讨论】:

    标签: r rvest


    【解决方案1】:

    rvest 用来确定如何提交表单的代码似乎出错了。它没有将通用“按钮”识别为提交按钮。在这种情况下,您可以使用

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

    【讨论】:

    • 感谢您提供有用的解决方案!但我现在卡在下一步,出现 403 错误(请参阅编辑)。
    • 嗯,403 错误意味着他们已收到请求但拒绝了它。许多应用程序试图阻止刮板。您可以尝试破解用户代理字符串以查看他们是否正在查看该字符串以拒绝您。还要检查您的用户名和密码。但唯一能真正说出在这种情况下发生了什么的人是应用程序所有者。您应该直接联系该网站以获得支持。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2014-02-25
    • 2017-08-24
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多