gpt4 book ai didi

r - 使用 RCurl 或 httr 在 R 中自动登录英国数据服务网站

转载 作者:行者123 更新时间:2023-12-02 08:06:10 25 4
gpt4 key购买 nike

我正在为 http://asdfree.com/ 编写一组可免费下载的 R 脚本。帮助人们分析UK data service托管的复杂样本调查数据。除了为这些数据集提供大量统计教程之外,我还想自动下载和导入这些调查数据。为了做到这一点,我需要弄清楚如何以编程方式登录到此 UK data service website .

我尝试了许多不同的 RCurlhttr 配置来登录,但我在某个地方犯了错误,然后陷入困境。我尝试过检查元素 as outlined in this post ,但是网站在浏览器中跳转得太快,我无法理解发生了什么。

该网站确实需要登录名和密码,但我相信在进入登录页面之前我就犯了一个错误。

网站的运作方式如下:

起始页应该是:https://www.esds.ac.uk/secure/UKDSRegister_start.asp

此页面会自动将您的网络浏览器重定向到以 https://wayf.ukfederation.org.uk/DS002/uk.ds?[blahblahblah] 开头的长 URL。

(1) 由于某种原因,SSL 证书无法在该网站上使用。这是the SO question I posted regarding this 。我使用的解决方法是忽略 SSL:

library(httr)
set_config( config( ssl.verifypeer = 0L ) )

然后我在起始网站上的第一个命令是:

z <- GET( "https://www.esds.ac.uk/secure/UKDSRegister_start.asp" )

这给了我一个z$url看起来很像 https://wayf.ukfederation.org.uk/DS002/uk.ds?[blahblahblah]我的浏览器也重定向到的页面。

然后,您应该在浏览器中输入“uk data archive”并单击 continue按钮。当我这样做时,它会将我重定向到网页 https://shib.data-archive.ac.uk/idp/Authn/UserPassword

我认为这就是我陷入困境的地方,因为我不知道如何拥有 cURL followlocation并登陆该网站。注意:尚未输入用户名/密码。

当我使用httr GET来自 wayf.ukfederation.org.uk 页面的命令如下:

 y <- GET( z$url , query = list( combobox = "https://shib.data-archive.ac.uk/shibboleth-idp" ) )

y$url字符串看起来很像 z$url (除了它的末尾有一个组合框=)。有什么办法可以解决这个uk data archive带有 RCurlhttr 的身份验证页面?

我无法判断我是否只是忽略了某些内容,或者我是否绝对必须使用 my previous SO post 中描述的 SSL 证书。或者什么?

(2) 当我确实进入该页面时,我相信代码的其余部分将是:

values <- list( j_username = "your.username" , 
j_password = "your.password" )
POST( "https://shib.data-archive.ac.uk/idp/Authn/UserPassword" , body = values)

但我想该页面将不得不等待......

最佳答案

表单返回的相关数据变量是actionorigin,而不是combobox。为 action 指定值 selection,为 origin 指定 combobox 中相关条目的值

y <- GET( z$url, query = list( action="selection", origin = "https://shib.data-archive.ac.uk/shibboleth-idp") )
> y$url
[1] "https://shib.data-archive.ac.uk:443/idp/Authn/UserPassword"

编辑

看起来句柄池没有使您的 session 正确保持事件状态。因此,您需要直接传递句柄,而不是自动传递。另外,对于 POST 命令,您需要设置 multipart=FALSE,因为这是 default for HTML forms 。 R 命令有不同的默认值,因为它主要用于上传文件。所以:

y <- GET( handle=z$handle, query = list( action="selection", origin = "https://shib.data-archive.ac.uk/shibboleth-idp") )
POST(body=values,multipart=FALSE,handle=y$handle)
Response [https://www.esds.ac.uk/]
Status: 200
Content-type: text/html

...snipped...


<title>

Introduction to ESDS

</title>

<meta name="description" content="Introduction to the ESDS, home page" />

关于r - 使用 RCurl 或 httr 在 R 中自动登录英国数据服务网站,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778543/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com