我正在尝试编写一个通过REST API访问某些数据的R包.但是,API不使用http身份验证,而是依赖cookie来保持会话的凭据.
本质上,我想用两个R函数替换bash脚本中的以下两行:一个用于执行登录,并存储会话cookie,第二个用于获取数据.
curl -X POST -c cookies.txt -d"username=xxx&password=yyy" http://api.my.url/login
curl -b cookies.txt http://api.my.url/data
Run Code Online (Sandbox Code Playgroud)
我显然不明白RCurl如何使用curl选项.我现在的脚本有:
library(RCurl)
curl <- getCurlHandle()
curlSetOpt(cookiejar='cookies.txt', curl=curl)
postForm("http://api.my.url/login", username='xxx', password='yyy', curl=curl)
getURL('http://api.my.url/data", curl=curl)
Run Code Online (Sandbox Code Playgroud)
最终getURL()失败并显示"未登录".来自服务器的消息,并且在postForm()没有cookies.txt文件之后.
我正在尝试使用我的凭据登录到.NET站点但无法使其正常工作.我的代码受到以下主题的启发
library(RCurl)
curl = getCurlHandle()
curlSetOpt(cookiejar = 'cookies.txt', followlocation = TRUE, autoreferer = TRUE, curl = curl)
html <- getURL('http://www.aceanalyser.com/Login.aspx', curl = curl)
viewstate <- as.character(sub('.*id="__VIEWSTATE" value="([0-9a-zA-Z+/=]*).*', '\\1', html))
viewstategenerator <- as.character(sub('.*id="__VIEWSTATEGENERATOR" value="([0-9a-zA-Z+/=]*).*', '\\1', html))
params <- list(
'txtUserID' = '********',
'txtPwd' = '*******',
'Btn_Login' = 'GO',
'__VIEWSTATE' = viewstate,
'__VIEWSTATEGENERATOR' = viewstategenerator,
'HiddenField1' = '1280',
'HiddenField2' = '700',
'Hdn_Pwd' = 'true')
html = postForm('http://www.aceanalyser.com/Login.aspx', .params = params, curl = curl)
grepl('Logout', html)
Run Code Online (Sandbox Code Playgroud)
结果:FALSE
请帮我理解这个问题
我正在尝试使用R来完成一项任务,以便在网站上搜索数据.
我想通过以下页面上的每个链接:http://capitol.hawaii.gov/advreports/advreport.aspx? year = 2013 & report = deadline &rpt_type =& measuretype = hb& title = House Bills
仅选择当前状态显示"已传输到调控器"的项目.例如,http://capitol.hawaii.gov/measure_indiv.aspx?billtype = HB&billnumber = 17&year = 2013
然后在STATUS TEXT中删除单元格以获取以下子句"通过最终阅读".例如:在SD 2中修改了最终解读,其中代表Fale,Jordan,Tsuji投票赞成保留; 代表Cabanilla,Morikawa,Oshiro,Tokioka投票否(4)并且没有原谅(0).
我已经尝试使用包Rcurl和XML(在R中)的先前示例,但我不知道如何正确使用它们用于aspx站点.所以我希望拥有的是:1.关于如何构建这样的代码的一些建议.2.并建议如何学习执行此类任务所需的知识.
谢谢你的帮助,
汤姆