标签: rcurl

如何使用R截取网站?

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

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

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

r rcurl httr

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

如何获得谷歌搜索结果

我使用了以下代码:

library(XML)
library(RCurl)
getGoogleURL <- function(search.term, domain = '.co.uk', quotes=TRUE) 
    {
    search.term <- gsub(' ', '%20', search.term)
    if(quotes) search.term <- paste('%22', search.term, '%22', sep='') 
        getGoogleURL <- paste('http://www.google', domain, '/search?q=',
        search.term, sep='')
    }

    getGoogleLinks <- function(google.url) 
    {
       doc <- getURL(google.url, httpheader = c("User-Agent" = "R(2.10.0)"))
       html <- htmlTreeParse(doc, useInternalNodes = TRUE, error=function(...){})
       nodes <- getNodeSet(html, "//a[@href][@class='l']")
       return(sapply(nodes, function(x) x <- xmlAttrs(x)[[1]]))
    }

search.term <- "cran"
quotes <- "FALSE"
search.url <- getGoogleURL(search.term=search.term, quotes=quotes)

links <- getGoogleLinks(search.url)
Run Code Online (Sandbox Code Playgroud)

我想找到我的搜索产生的所有链接,我得到以下结果:

> links
list()
Run Code Online (Sandbox Code Playgroud)

我怎样才能获得链接?另外我想获得谷歌搜索结果的头条新闻和总结如何才能获得它?最后是否有办法获取ChillingEffects.org结果中的链接?

r hyperlink rcurl

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

如何在R中从单个元素中删除单个元素

我想用R来刮掉这个页面:( http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html)和其他人,以获得目标得分手和时间.

到目前为止,这就是我所拥有的:

require(RCurl)
require(XML)

theURL <-"http://www.fifa.com/worldcup/archive/germany2006/results/matches/match=97410001/report.html"
webpage <- getURL(theURL, header=FALSE, verbose=TRUE) 
webpagecont <- readLines(tc <- textConnection(webpage)); close(tc)  

pagetree <- htmlTreeParse(webpagecont, error=function(...){}, useInternalNodes = TRUE)
Run Code Online (Sandbox Code Playgroud)

pagetree对象现在包含指向我解析的html的指针(我认为).我想要的部分是:

<div class="cont")<ul>
<div class="bold medium">Goals scored</div>
        <li>Philipp LAHM (GER) 6', </li>
        <li>Paulo WANCHOPE (CRC) 12', </li>
        <li>Miroslav KLOSE (GER) 17', </li>
        <li>Miroslav KLOSE (GER) 61', </li>
        <li>Paulo WANCHOPE (CRC) 73', </li>
        <li>Torsten FRINGS (GER) 87'</li>
</ul></div>
Run Code Online (Sandbox Code Playgroud)

但我现在已经失去了对于如何隔离它们,并坦言xpathSApplyxpathApply迷惑beejeebies我了!

那么,有没有人知道如何制定一个命令来吸出<div class="cont">标签中包含的元素?

xml r web-scraping rcurl

11
推荐指数
1
解决办法
3841
查看次数

R显示相同Google搜索网址的不同HTML(与网络浏览器相比)

目标

我想使用R下载Google搜索网页的HTML,如网络浏览器所示.

问题

当我在R中下载Google搜索网页HTML时,使用网络浏览器中完全相同的网址,我注意到R下载的HTML与网络浏览器HTML不同,例如对于高级Google搜索网址,日期参数会被忽略.由R读入的HTML,而在Web浏览器中则保留.

我在网络浏览器中为"West End Theatre"进行Google搜索,并指定日期范围为2012年1月1日至1月31日.然后我复制生成的URL并将其粘贴到R.

# Google Search URL from Firefox web browser
url <- "http://www.google.co.uk/search?q=west+end+theatre&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-GB:official&client=firefox-a#q=west+end+theatre&hl=en&client=firefox-a&hs=z7I&rls=org.mozilla:en-GB%3Aofficial&prmd=imvns&sa=X&ei=rJE7T8fwM82WhQe_6eD2CQ&ved=0CGoQpwUoBw&source=lnt&tbs=cdr:1%2Ccd_min%3A1%2F1%2F2012%2Ccd_max%3A31%2F1%2F2012&tbm=&bav=on.2,or.r_gc.r_pw.r_qf.,cf.osb&fp=6f92152f78004c6d&biw=1600&bih=810"
u <- URLdecode(url)

# Webpage as seen in browser
browseURL(u)

# Webpage as seen from R
HTML <- paste(readLines(u), collapse = "\n")
cat(HTML, file = "output01.html")
shell.exec("output01.html")

# Webpage as seen from R through RCurl
library(RCurl)
cookie = 'cookiefile.txt'
curl = getCurlHandle(cookiefile = cookie,
                     useragent =  "Mozilla/5.0 (Windows; U; Windows NT 5.1; en - US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6",
                     header = FALSE, …
Run Code Online (Sandbox Code Playgroud)

html r rcurl

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

使用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万
查看次数

使用Rcurl和HTTPs

我在Windows上的R中尝试了以下代码:

library(RCurl)
postForm("https://www.google.com/accounts/ClientLogin/",
    "email" = "me@gmail.com",
    "Passwd" = "abcd",
    "service" = "finance",
    "source" = "Test-1"
)
Run Code Online (Sandbox Code Playgroud)

但是出现以下错误:

Error in postForm()
SL certificate problem, verify that the CA cert is OK. Details:
error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Run Code Online (Sandbox Code Playgroud)

如何设置RCurl以允许使用HTTP?

r rcurl

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

如何在*服务器身份验证后使用RCurl*下载大型二进制文件

我最初问这个关于使用httr包执行此任务的问题,但我认为不可能使用httr.所以我重新编写了我的代码来RCurl代替使用- 但我仍然踩着可能与...相关的东西writefunction但我真的不明白为什么.

您应该能够使用32位版本的R来重现我的工作,因此如果您在RAM中读取任何内容,则会达到内存限制.我需要一个直接下载到硬盘的解决方案.

首先,这段代码可以正常工作 - 压缩文件被妥善保存到磁盘上.

library(RCurl)
filename <- tempfile()
f <- CFILE(filename, "wb")
url <- "http://www2.census.gov/acs2011_5yr/pums/csv_pus.zip"
curlPerform(url = url, writedata = f@ref)
close(f)
# 2.1 GB file successfully written to disk
Run Code Online (Sandbox Code Playgroud)

现在这里有一些RCurl不起作用的代码.如前一个问题所述,复制这一点将需要在ipums上创建一个提取.

your.email <- "email@address.com"
your.password <- "password"
extract.path <- "https://usa.ipums.org/usa-action/downloads/extract_files/some_file.csv.gz"

library(RCurl)

values <- 
    list(
        "login[email]" = your.email , 
        "login[password]" = your.password , 
        "login[is_for_login]" = 1
    )

curl = getCurlHandle() …
Run Code Online (Sandbox Code Playgroud)

r web-scraping rcurl httr

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

在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 中发出 GET 请求

我一直在使用 httr 和 rcurl,但无法设法将以下curl GET 请求转换为 R:

curl -X GET --header 'Accept: application/json' --header 'Authorization: Bearer 31232187asdsadh23187' 'https://this.url.api.com:334/api/endpoint'
Run Code Online (Sandbox Code Playgroud)

特别是,我在传递授权选项时遇到了一些麻烦,因为我无法在两个库中找到等效的参数。这可能是一个自定义标头?

r http rcurl httr

8
推荐指数
2
解决办法
2万
查看次数

标签 统计

r ×10

rcurl ×10

httr ×6

web-scraping ×3

curl ×1

html ×1

http ×1

hyperlink ×1

rselenium ×1

ssl ×1

xml ×1