标签: httr

R中的SOAP请求

有谁知道如何使用R制定以下SOAP请求?

POST /API/v201010/AdvertiserService.asmx HTTP/1.1
Host: advertising.criteo.com
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "https://advertising.criteo.com/API/v201010/clientLogin"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <clientLogin xmlns="https://advertising.criteo.com/API/v201010">
      <username>string</username>
      <password>string</password>
      <source>string</source>
    </clientLogin>
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

soap r rcurl httr

12
推荐指数
1
解决办法
8247
查看次数

如何使用R截取网站?

所以我不是100%确定这是可能的,但我在Rubypython中找到了一个很好的解决方案,所以我想知道类似的东西是否可以在R中起作用

基本上,给定一个URL,我想呈现该URL,将呈现的屏幕截图作为.png,并将屏幕截图保存到指定的文件夹.我想在无头的linux服务器上做所有这些.

我最好的解决方案是在运行CutyCaptsystem这样的工具,还是存在一个基于R的工具集来帮我解决这个问题?

r rcurl httr

12
推荐指数
2
解决办法
4067
查看次数

R:检查url的存在,httr:GET()和url.exists()的问题

我有一个大约13,000个URL的列表,我想从中提取信息,但是,并非每个URL实际存在.事实上,大多数人没有.我刚尝试通过所有13,000个网址,html()但需要很长时间.我试图找出如何在解析它们之前查看url是否实际存在html().我已经尝试使用httrGET()功能,以及rcurlsurl.exists()功能.由于某种原因,即使URL确实存在,也url.exist()始终返回FALSE值,并且我使用的方式GET()总是返回成功,我认为这是因为页面被重定向.

以下URL表示我正在解析的页面类型,第一个不存在

urls <- data.frame('site' = 1:3, 'urls' = c('https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-1&unit=SLE010', 
                            'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=HMM202',
                            'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=SLE339'))

urls$urls <- as.character(urls$urls)
Run Code Online (Sandbox Code Playgroud)

因为GET(),问题是第二个URL实际上并不存在,但它被重定向,因此返回"成功".

 urls$urlExists <- sapply(1:length(urls[,1]), 
                     function(x) ifelse(http_status(GET(urls[x, 'urls']))[[1]] == "success", 1, 0))
Run Code Online (Sandbox Code Playgroud)

因为url.exists(),即使第一个和第三个URL确实存在,我也会返回三个FALSE.

 urls$urlExists2 <- sapply(1:length(urls[,1]), function(x) url.exists(urls[x, 'urls']))
Run Code Online (Sandbox Code Playgroud)

我查了一下这两个职位1,2,但我宁愿不使用的用户代理,只是因为我不知道如何找到我的,或者它是否会使用其他计算机上的验证码不同人的变化.因此,使代码更难以被其他人接收和使用.两篇帖子的答案建议使用GET()in httr.这似乎GET()是首选的方法,但我需要弄清楚如何处理重定向问题.

在解析它们之前,任何人都可以建议在R中测试URL的存在html()吗?我也很乐意为此问题提出任何其他建议的工作.

更新:

在查看了返回的值后,GET()我想出了一个解决方法,详细了解答案.

html url get r httr

12
推荐指数
3
解决办法
3777
查看次数

使用RCurl/httr进行Github基本授权

我正在尝试使用此处说明从命令行创建OAuth令牌.我可以curl从命令行使用,并获得正确的响应

curl -u 'username:pwd' -d '{"scopes":["user", "gist"]}' \
  https://api.github.com/authorizations
Run Code Online (Sandbox Code Playgroud)

现在,我想在R中使用RCurl或复制相同的内容httr.这是我尝试过的,但两个命令都返回错误.谁能指出我在这里做错了什么?

httr::POST(
  'https://api.github.com/authorizations',
  authenticate('username', 'pwd'),
  body = list(scopes = list("user", "gist"))
)

RCurl::postForm(
  uri = 'https://api.github.com/authorizations',
  .opts = list(
    postFields = '{"scopes": ["user", "gist"]}',
    userpwd = 'username:pwd'
  )
)
Run Code Online (Sandbox Code Playgroud)

r rcurl httr

10
推荐指数
1
解决办法
1268
查看次数

SSL验证导致RCurl和httr中断 - 应该是合法的网站

我正在尝试自动登录英国的数据存档服务.该网站显然值得信赖.不幸的是,RCurlhttr在SSL验证休息.我的网络浏览器不会发出任何警告.我可以通过使用来解决这个问题ssl.verifypeer = FALSE,RCurl但我想了解发生了什么?

# breaks
library(httr)
GET( "https://www.esds.ac.uk/secure/UKDSRegister_start.asp" )

# breaks
library(RCurl)
cert <- system.file("CurlSSL/cacert.pem", package = "RCurl")
getURL("https://www.esds.ac.uk/secure/UKDSRegister_start.asp",cainfo = cert)

# works
library(RCurl)
getURL(
    "https://www.esds.ac.uk/secure/UKDSRegister_start.asp" , 
    .opts = list(ssl.verifypeer = FALSE)
) # note: use list(ssl.verifypeer = FALSE,followlocation=TRUE) to see content
Run Code Online (Sandbox Code Playgroud)

ssl curl r rcurl httr

10
推荐指数
1
解决办法
1万
查看次数

"你必须提供哈希." 使用API​​下载数据时出错(在R中)

我想通过API代码从MARVEL DEVELOPER中提取数据并对其进行分析(使用R).

我从MARVEL网站获得以下网址:http://gateway.marvel.com:80/v1/public /characters?apikey = f389fcb49ad574e10ca570867f4bfa43

我使用httr包来收集数据:

install.packages("httr")
library(httr)
> url <- GET("http://gateway.marvel.com:80/v1/public/characters?orderBy=name&limit=100&apikey=f389fcb49ad574e10ca570867f4bfa43")
> content(url)
$code
[1] "MissingParameter"

$message
[1] "You must provide a hash."
Run Code Online (Sandbox Code Playgroud)

我想将所有这些数据提取到R.我应该做什么/读什么?

谢谢.

api r httr

10
推荐指数
2
解决办法
6734
查看次数

以编程方式在R中抓取响应头

我正在尝试访问突出显示的响应标题:下面的屏幕截图中的位置文本仅使用R及其基于curl的webscraping库.通过访问http://www.worldvaluessurvey.org/WVSDocumentationWVL.jsp,点击任何数据文件的下载,并填写协议表单,可以轻松地在任何Web浏览器中找到这一点.下载在Web浏览器中自动开始.

在此输入图像描述

我相信获取有效cookie的唯一方法是library(curlconverter)(参见如何使用R下载半破javascript asp函数后面的文件)但该答案似乎不足以以编程方式确定文件的http url,只有在已知的压缩文件下载才能下载.

我在下面用不同的httr和curlconverter代码粘贴了一些代码,但我在这里遗漏了一些东西.同样,唯一的目标是以编程方式完全确定R(跨平台)内的突出显示文本.

library(curlconverter)
library(httr)

browserPOST <-
    "curl 'http://www.worldvaluessurvey.org/AJDownload.jsp'
    -H 'Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8'
    -H 'Accept-Encoding:gzip, deflate'
    -H 'Accept-Language:en-US,en;q=0.8'
    -H 'Cache-Control:max-age=0'
    --compressed -H 'Connection:keep-alive'
    -H 'Content-Length:188'
    -H 'Content-Type:application/x-www-form-urlencoded'
    -H 'Cookie:ASPSESSIONIDCASQAACD=IBLGBFOAEHFILMMJJCFEOEMI; JSESSIONID=50DABDEDD0B2FC370C415B4BD1855260; __atuvc=13%7C45; __atuvs=58224f37d312c42400c'
    -H 'Host:www.worldvaluessurvey.org'
    -H 'Origin:http://www.worldvaluessurvey.org'
    -H 'Referer:http://www.worldvaluessurvey.org/AJDownloadLicense.jsp'
    -H 'Upgrade-Insecure-Requests:1'
    -H 'User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36'"

form_data <-
    list( 
        ulthost = "WVS" ,
        CMSID = "" ,
        LITITLE = "" ,
        LINOMBRE …
Run Code Online (Sandbox Code Playgroud)

curl r httr

10
推荐指数
1
解决办法
1157
查看次数

在闪亮的应用程序中重定向

我正在尝试将我的Shiny应用程序重定向到另一个页面.我正在使用httr发送GET请求并查看用户是否已登录.如果不是,我想将其重定向到另一个链接.

我可以只使用R/Shiny做到这一点,还是需要一些额外的库?

样品:

library(httr)
library(shiny)
shinyServer(function(input, output) {
rv <- reactiveValues()
rv$mytoken = session$request$token

observeEvent(input$button1, {
  rv$a <- GET("my.url:3405/authtoken", 
              add_headers(
                .headers = c("token" = rv$mytoken)
              ))
  if (rv$a$status_code == 200) {
  } else {
    # redirect magic
  }
})
}

shinyUI(fluidPage(
  actionButton(button1, "btn")
))
Run Code Online (Sandbox Code Playgroud)

redirect r httr shiny

10
推荐指数
2
解决办法
2404
查看次数

在r中搜索密码保护的论坛

我在我的脚本中登录时遇到问题.尽管我在stackoverflow上找到了所有其他好的答案,但没有一个解决方案适合我.

我正在为我的博士研究抓一个网络论坛,其网址是http://forum.axishistory.com.

我想要抓取的网页是成员列表 - 列出所有成员个人资料的链接的页面.如果登录,则只能访问成员列表.如果您尝试在不登录的情况下访问成员列表,则会显示登录表单.

成员列表的URL是:http://forum.axishistory.com/memberlist.php.

我试过httr-package:

library(httr)
members  <-  GET("http://forum.axishistory.com/memberlist.php", authenticate("username", "password"))
members_html <- html(members)
Run Code Online (Sandbox Code Playgroud)

输出是登录表单.

然后我尝试了RCurl:

library(RCurl)
members_html <- htmlParse(getURL("http://forum.axishistory.com/memberlist.php", userpwd = "username:password"))
members_html
Run Code Online (Sandbox Code Playgroud)

输出是登录表单 - 再次.

然后我尝试了这个主题的list()函数 - 在R中刮掉受密码保护的网站:

handle <- handle("http://forum.axishistory.com/")
path   <- "ucp.php?mode=login"

login <- list(
  amember_login = "username"
  ,amember_pass  = "password"
  ,amember_redirect_url = 
    "http://forum.axishistory.com/memberlist.php"
)

response <- POST(handle = handle, path = path, body = login)
Run Code Online (Sandbox Code Playgroud)

然后再次!输出是登录表单.

我正在研究的下一件事是RSelenium,但经过所有这些尝试,我试图弄清楚我是否可能遗漏了某些东西(可能是完全明显的东西).

我在这里查看了其他相关帖子,但无法弄清楚如何将代码应用于我的案例:

如何使用R从需要cookie的SSL页面下载压缩文件

在R中刮掉受密码保护的网站

如何使用R从需要cookie的SSL页面下载压缩文件

/sf/ask/1923971801/

Web使用R抓取密码保护的网站

r web-scraping rcurl httr rselenium

9
推荐指数
1
解决办法
4626
查看次数

R:从Companies House API获取pdf文档

我正在尝试使用R从API中获取文档.在此文章中了解该过程的说明.我一直在按照上述步骤取得部分成功,但仍然无法访问文档内容的最后一步:

  1. 找到您感兴趣的文件归档(例如,为公司制作归档历史请求1).在"链接"字段中解析对文档链接的响应:{"document_metadata":"链接URI片段在这里"}.

没问题:

library(httr)
library(jsonlite)
library(openssl)

### retrieving filing history ####
company_num = 'FC013908'
key = 'my_key'
fh_path = paste0('/company/', str_to_upper(company_num), "/filing-history")
fh_url <- modify_url("https://api.companieshouse.gov.uk/", path = fh_path)
fh_test <- GET(fh_url, authenticate(key, "")) #status_code = 200
fh_parsed <- jsonlite::fromJSON(content(fh_test, "text",encoding = "utf-8"), flatten = TRUE)
docs <- fh_parsed$items
Run Code Online (Sandbox Code Playgroud)

完成.

2对于给定的文档,通过CH Document API3请求文档元数据.解析响应以获取可用的文档(mime)类型以及指向实际文档数据的链接(文档URI片段).

这里没问题:

md_meta_url = docs$links.document_metadata[1]  
key_pass <- paste0(key,":")
decoded_auth <- paste0('Basic ', base64_encode(key_pass))

md_test <- GET(md_meta_url,
               add_headers(Authorization = decoded_auth)
               )
md_test #status_code = 200!
md_parsed <- jsonlite::fromJSON(content(md_test, …
Run Code Online (Sandbox Code Playgroud)

api r request-headers httr

9
推荐指数
1
解决办法
562
查看次数

标签 统计

httr ×10

r ×10

rcurl ×5

api ×2

curl ×2

get ×1

html ×1

redirect ×1

request-headers ×1

rselenium ×1

shiny ×1

soap ×1

ssl ×1

url ×1

web-scraping ×1