我正在尝试将以下 curl 命令转换为 httr/RCurl 以将 cookie 转换为 R。但我不确定如何使用 getURL(...) 或 GET(. ..)
curl --data "j_username=username&j_password=password" http://localhost:8080/myApp/j_spring_security_check --cookie-jar cookies.txt
Run Code Online (Sandbox Code Playgroud)
我能够获取上面命令行 curl 命令创建的 cookie 信息并将其粘贴到 GET 请求中(它有效)。如果我可以在 R 中生成 cookie,那就方便了。
这是我的工作 httr get GET():
GET(dataURL,
verbose(),
add_headers("Content-type"="application/json",
"Accept"="application/json",
"Accept-Version"=" 1.0",
"Cookie"="JSESSIONID=24BA7A80A02317AD2B6C87C8D10B6787"
)
)
Run Code Online (Sandbox Code Playgroud) 最近,我问了一个类似的问题:发送表达网站的回报动态结果(图片),并得到了无需发送表情到网页的领域terific响应,而是用来完成工作的网址.
我已经发现了一种更好的正则表达式可视化器(由G.格罗滕迪克指出),因为它可以被设置为基于Python的(更靠近于R;例如它允许像lookbehinds (?<=foo)该http://www.regexper.com/会因错误) .
使用这个正则表达式:"(?<=foo)\\s*foo[A-Z]\\d{2,3}"我想使用R发送(?<=foo)\s*foo[A-Z]\d{2,3},设置下拉菜单Python,打开或返回如下所示的可视结果:

相同的URL技巧在此处不起作用,因为在输入表达式时URL不会更改,而嵌入式JavaScript将返回结果.
MWE
## Expression
x <- "(?<=foo)\\s*foo[A-Z]\\d{2,3}"
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用R进行一些网页抓取,并且在几个页面中它相对容易.但是我已经在一个特定的网页上挣扎了几个星期:
我认为,问题在于最终页面使用javascript加载数据.
起初我认为这是一个非常简单的案例; 毕竟,它只是一个链接,你放在浏览器中查看数据,所以我认为好,这是一个很好的旧的获取请求,我天真地尝试这样的事情:
library(httr)
url <- "https://www.commerzbank.de/de/hauptnavigation/kunden/kursinfo/devisenk/weitere_waehrungen___indikative_kurse/indikative_kurse.jsp"
res1 <- GET(url = url)
Run Code Online (Sandbox Code Playgroud)
由于它不起作用,我检查了网页的工作方式,如下所示.首先,它设置一些cookie和一些参数,然后将浏览器(通过http POST请求)重定向到URL https://www.commerzbank.de/rates/do.rates.这个新页面加载了一个巨大的javascript代码(1923行代码,由http://jsbeautifier.org/格式化),负责下载数据并生成html代码以显示它.此代码使用原始页面设置的cookie和参数来确定要下载和显示的数据.
我在R中尝试了太多东西来获取此网页中的数据.我不会在这里放入我尝试的所有疯狂的东西,因为它太长了(有时令人尴尬),但我尝试过使用RCurl和其他软件包的大部分功能(repmis,scrapeR,httr,rjson等) .似乎没有任何工作,因为这些软件包似乎没有办法(至少自动)使javascript代码运行以下载数据.
是否有任何包/隐藏功能可以帮助我实现这一目标?
提前致谢.
我正在AWS"Ubuntu Server 12.04.2"上运行R Studio并通过我的浏览器访问R Studio.
当我尝试使用包googlesheets和代码验证google auth API时:
gs_auth(token = NULL, new_user = FALSE,
key = getOption("googlesheets.client_id"),
secret = getOption("googlesheets.client_secret"),
cache = getOption("googlesheets.httr_oauth_cache"), verbose = TRUE)
这里的问题是它将我重定向到本地机器(基于Windows)的浏览器.即使我授权它,它也会重定向到" http:// localhost:1410 /?state = blahblah&code = blahblah " 这样的网址.
在这种情况下如何授权googlesheets?
我甚至尝试从我的Windows机器上传输现有的httr-oauth令牌来删除ubuntu服务器.
我有一些依赖于httr包的facebook函数.
通常的程序是必须设置oauth应用程序规范和facebook端点.直到最近,这就像一个魅力,但现在当我尝试通过oauth2.0_token函数获取令牌时,我得到错误:
在浏览器中等待身份验证...按Esc/Ctrl + C中止身份验证完成.Fejl i init_oauth2.0(self $ endpoint,self $ app,scope = self $ params $ scope,:Bad Request(HTTP 400).
你看我的代码如下:
facebook_app <- oauth_app("facebook", key = "XXXX", secret = "YYYY")
# end point
facebook_ep <- oauth_endpoint(
authorize = "https://www.facebook.com/dialog/oauth",
access = "https://graph.facebook.com/oauth/access_token")
# token from endpoint and oauth
fb.token <- oauth2.0_token(facebook_ep, facebook_app, user_params = facebook_ep)
Run Code Online (Sandbox Code Playgroud)
我去过各种帖子和论坛,但我还没有找到解决方案的运气.
我想使用R中的URL保存HTML文件。我试图分别在网站的URL上使用GET和的read_html功能httr和rvest程序包保存响应对象,然后在HTML上保存HTML。但这并不能保存网站的实际内容。
url = "https://facebook.com"
get_object = httr::GET(url); save(get_object, "file.html")
html_object = rvest::read_html(url); save(html_object, "file.html")
Run Code Online (Sandbox Code Playgroud)
这些方法都无法将实际网站的正确输出(即.html文件中的网页HTML内容)保存到HTML文件中。
我正在尝试使用 R 从经过身份验证的 API 读取 json,但没有成功。
我有 Curl 代码并尝试使用“curlconverter”库将其转换为 R 并尝试使用“httr”库获取它。
curl -X GET \
'https://api.cartolafc.globo.com/auth/liga/gurudocartola-com?orderBy=campeonato&page=1' \
-H 'Cache-Control: no-cache' \
-H 'x-glb-token: mytoken'
Run Code Online (Sandbox Code Playgroud)
我很感激在 R 中编写此代码的解决方案。
我想在 R 中抓取以下页面的内容:http : //directoriosancionados.funcionpublica.gob.mx/SanFicTec/jsp/Ficha_Tecnica/SancionadosN.htm
但是,我找不到任何可以帮助我获取信息的 HTML 标记或任何其他工具。
我有兴趣使用“INHABILITADOS Y MULTADOS”部分的信息构建一个数据框,如下图所示:
选择此选项后,会出现一个包含多个提供程序的菜单,每个提供程序都有一个特定的表格,其中包含我想要回忆的信息。
我想遍历一个 URL 列表,我想知道这些 URL 是否存在。
RCurl提供url.exists()功能。但是,输出似乎不正确,因为例如它说 amazon.com 未注册(这样做是因为url.exists()-function 不返回 200 范围内的值,在 amazon.com 的情况下)它是 405(“不允许的方法”)。
我也试过HEAD()和GET()由提供的httr软件包。但有时我会在此处收到错误消息,例如超时或 URL 未注册。
错误消息如下所示:
Error in curl::curl_fetch_memory(url, handle = handle) :
Timeout was reached: Connection timed out after 10000 milliseconds
Error in curl::curl_fetch_memory(url, handle = handle) :
Could not resolve host: afsadadssadasf.com
当我收到这样的错误时,整个 for 循环就会停止。是否可以继续for循环?我试过tryCatch(),但据我所知,这只有在问题出在数据帧本身时才有帮助。
我正在尝试通过R使用httr包向作曲家休息服务器发出帖子请求.我编写了一个代码,然后从中创建了composer rest服务器.这些是我的细节
请求URL:http:// localhost:3000/api/nl.amis.registry.fruits
Body: {
"$class": "nl.amis.registry.fruits",
"Id": "9",
"name": "orange",
"description": "string",
"count": ""
}
首先,我尝试过使用composer rest服务器.出于我的目的,我需要将计数空白,并且该值将被另一个API调用附加.我能够通过计数成功完成交易:"".这我可以检查作曲家游乐场的测试部分.剩下的代码工作正常,稍后会附加count变量.
现在我正在写一个R代码,通过POST请求进行类似的事务.这里我面临一个错误,"count不能为空"并返回错误422 Unprocessable entity.我使用的内容类型是application/json.在使用"count":{}时,post请求进程正常,我在响应中得到"count":[object Object].但后来执行追加的代码将执行类似count的操作:"[object Object],1"其中我期待"count":"1".在composer playground中使用测试时一切正常但是在尝试通过rest API从外部访问时会产生问题.请帮忙.
httr ×10
r ×9
rcurl ×5
rvest ×2
web-scraping ×2
hyperledger ×1
jsp ×1
oauth ×1
oauth-2.0 ×1
rest ×1
rscript ×1
ubuntu ×1
ubuntu-12.04 ×1
url ×1
web ×1