我想使用RCurl登录网站并从网上获取数据(没有登录就无法看到数据.)
我想导出这个(例如)" http://www.appannie.com/app/ios/instagram/ranking/history/chart_data/?s=2010-10-06&e=2012-06-04&c=143441&f=ranks&d在我使用RCurl登录后,= iphone "进入R".问题是我无法使用RCurl登录.我之前没有尝试过,所以大多数时候我都提到了http://www.omegahat.org/RCurl/philosophy.html.
所以这就是我的尝试.(这里,'me@gmail.com'是我的用户ID,'9999'是我的密码 - 我刚刚完成了.)
library(RJSONIO)
library(rjson)
library(RCurl)
appannie <- getURL("http://www.appannie.com/app/ios/instagram/ranking/history/chart_data/.json?s=2010-10-06&e=2012-06-04&c=143441&f=ranks&d=iphone, userpwd = me@gmail.com:9999", verbose = TRUE)
Run Code Online (Sandbox Code Playgroud)
但这给了我以下信息:
About to connect() to www.appannie.com port 80 (#0)
* Trying 69.167.138.64... * connected
* Connected to www.appannie.com (69.167.138.64) port 80 (#0)
> GET /app/ios/instagram/ranking/history/chart_data/?s=2010-10-06&e=2012-06-04&c=143441&f=ranks&d=iphone HTTP/1.1
Host: www.appannie.com
Accept: */*
< HTTP/1.1 403 FORBIDDEN
< Server: nginx/1.1.19
< Date: Fri, 01 Mar 2013 23:41:32 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< Connection: keep-alive
< …Run Code Online (Sandbox Code Playgroud) 在RCurl中,CFILE定义了一个函数和一个类来处理C级文件句柄.从手册:
目的是能够将这些作为选项传递给libcurl,以便它可以从文件读取或写入文件.我们也可以使用R连接执行此操作并指定操作这些连接的回调函数.但是对于大型文件来说,使用C级文件句柄的速度可能会快得多.
没有与下载相关的示例,所以我试过:
library(RCurl)
u = "http://cran.r-project.org/web/packages/RCurl/RCurl.pdf"
f = CFILE("RCurl.pdf", mode="wb")
ret= getURL(u, write = getNativeSymbolInfo("R_curl_write_binary_data")$address,
file = f@ref)
Run Code Online (Sandbox Code Playgroud)
我也尝试用替换file选项writedata = f@ref.该文件已下载但已损坏.为write参数编写自定义回调仅适用于非二进制数据.
有没有想过在RCurl中将二进制文件直接下载到磁盘(不加载到内存中)?
我已经将.RData文件(使用创建save())上传到ftp服务器,我正在尝试使用getURL()来下载同一个文件.对于我读过的所有示例和帖子,我似乎无法让它工作.
使用以下命令保存.RData文件:
save(results, file=RDataFilePath, compress="xz") #save object "results" w/ compression
#RDataFilePath is the location of the results.RData file on my harddrive
Run Code Online (Sandbox Code Playgroud)
这些数据使用以下方式上载
uploadURL <-"ftp://name:password@host/folder/results.RData" #name the url
ftpUpload(RDataFilePath, to=uploadURL, connecttimeout=120) #upload
Run Code Online (Sandbox Code Playgroud)
这就是我尝试下载results.RData的方法getURL:
downloadURL <- "host/folder/results.RData"
load(getURL(downloadURL, userpwd="name:password", connecttimeout=120))
Run Code Online (Sandbox Code Playgroud)
这给出了以下错误:
Error in curlPerform(curl = curl, .opts = opts, .encoding = .encoding) :
embedded nul in string: 'ý7zXZ'
Run Code Online (Sandbox Code Playgroud)
当我将downloadURL字符串粘贴到我的浏览器中时,.RData文件立即下载,所以我知道没有拼写错误.错误消息表明url无法读取压缩格式的b/c; 但是,当我使用save()w/o压缩时,我收到类似的错误消息.
尝试从FTP下载.csv时,我也收到错误消息:
read.csv(getURL(downloadURL1)) #downloadURL1 is similar to downloadURL, but points to the .csv file
Error …Run Code Online (Sandbox Code Playgroud) 我正在尝试从github安装一个包,但是当我使用时我一直收到错误install_github.
library(devtools) install_github(repo="swirl", username="ncarchedi") Installing github repo(s) swirl/master from ncarchedi Downloading swirl.zip from https://github.com/ncarchedi/swirl/archive/master.zip Error in function (type, msg, asError = TRUE) : error setting certificate verify locations: CAfile: /Library/Frameworks/R.framework/Versions/3.0/Resources/library/RCurl/CurlSSL/cacert.pem CApath: none
我试图安装几个不同的包(包括ggmap的更新版本),我总是得到相同的错误.它必须与RCurl有关,但我不明白问题是什么,或者如何解决它.我有devtools(版本1.3)和RCurl(版本1.95-4.1).我在mac上运行R版本3.0.1("Good Sport").
结果来自 sessionInfo()
sessionInfo() R version 3.0.1 (2013-05-16) Platform: x86_64-apple-darwin10.8.0 (64-bit) locale: [1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8 attached base packages: [1] stats graphics grDevices utils datasets methods base other attached packages: [1] RCurl_1.95-4.1 bitops_1.0-5 devtools_1.3 loaded via a namespace (and not attached): [1] digest_0.6.3 evaluate_0.4.3 httr_0.2 memoise_0.1 parallel_3.0.1 …
我在使用RCurl函数getURL访问使用自签名证书的服务器上的HTTPS URL 时遇到问题.我在Mac OS X 10.9.2上运行R 3.0.2.
我已经阅读了有关该主题的常见问题解答和卷曲页面.所以这就是我的立场:
RCurl顽固地拒绝使用以下代码连接到该网站:
getURL(" https://somesite.tld ",verbose = T,cainfo = normalizePath("〜/ cert.pem"))
这是我得到的输出:
* Adding handle: conn: 0x7f92771b0400
* Adding handle: send: 0
* Adding handle: recv: 0
* Curl_addHandleToPipeline: length: 1
* - Conn 38 (0x7f92771b0400) send_pipe: 1, recv_pipe: 0
* About to connect() to somesite.tld port 443 (#38)
* Trying 42.42.42.42...
* Connected to somesite.tld (42.42.42.42) port 443 …Run Code Online (Sandbox Code Playgroud) 我正在处理数千个气象时间序列数据(样本数据可以从这里下载) https://dl.dropboxusercontent.com/s/bxioonfzqa4np6y/timeSeries.txt
在我的Linux Mint PC(64位,8GB RAM,双核2.6 GHz)上使用ggplot2绘制这些数据耗费了大量时间.我想知道是否有办法加快速度或更好地绘制这些数据?非常感谢您的任何建议!
这是我现在使用的代码
##############################################################################
#### load required libraries
library(RCurl)
library(dplyr)
library(reshape2)
library(ggplot2)
##############################################################################
#### Read data from URL
dataURL = "https://dl.dropboxusercontent.com/s/bxioonfzqa4np6y/timeSeries.txt"
tmp <- getURL(dataURL)
df <- tbl_df(read.table(text = tmp, header=TRUE))
df
##############################################################################
#### Plot time series using ggplot2
# Melt the data by date first
df_melt <- melt(df, id="date")
str(df_melt)
df_plot <- ggplot(data = df_melt, aes(x = date, y = value, color = variable)) +
geom_point() +
scale_colour_discrete("Station #") +
xlab("Date") +
ylab("Daily Precipitation [mm]") …Run Code Online (Sandbox Code Playgroud) 我对R编程比较陌生,我试图将我在Johns Hopkins数据科学专业中学到的一些东西用于实际应用.具体来说,我想自动化从美国财政部网站下载历史债券价格的过程
使用Firefox和R,我能够确定美国财政部网站使用非常简单的HTML POST表单来指定感兴趣的报价的单个日期.然后返回所有未偿债券的二级市场信息表.
我没有尝试使用两个不同的R包来向美国财政部Web服务器提交请求.野兔是我尝试过的两种方法:
尝试#1(使用RCurl):
url <- "https://www.treasurydirect.gov/GA-FI/FedInvest/selectSecurityPriceDate.htm"
td.html <- postForm(url,
submit = "Show Prices",
priceDate.year = 2014,
priceDate.month = 12,
priceDate.day = 15,
.opts = curlOptions(ssl.verifypeer = FALSE))
Run Code Online (Sandbox Code Playgroud)
这导致返回并存储的网页,td.html但它包含的是来自treasurydirect服务器的错误消息.我知道服务器正在运行,因为当我通过浏览器提交相同的请求时,我得到了预期的结果.
尝试#2(使用rvest):
s <- html_session(url)
f0 <- html_form(s)
f1 <- set_values(f0[[2]], priceDate.year=2014, priceDate.month=12, priceDate.day=15)
test <- submit_form(s, f1)
Run Code Online (Sandbox Code Playgroud)
不幸的是,这种方法甚至不会留下R并导致来自R的以下错误消息:
Submitting with 'submit'
Error in function (type, msg, asError = TRUE) : <url> malformed
Run Code Online (Sandbox Code Playgroud)
我似乎无法弄清楚如何查看正在发送给rvest的"格式错误"的文本,以便我可以尝试诊断问题.
任何建议或提示解决这个看似简单的任务将不胜感激!
我试图从交互式aspx网页webscrape表.我已经阅读了所有关于堆栈的R webscraping问题,我想我已经接近了,但我似乎无法得到它.
我想从这里生成的表中提取数据.最终我想循环遍历每个日期和状态选项,但我的挑战实际上只是到R提交我的参数并为任何特定查询拉入结果表.
根据我收集的内容,答案可能涉及RCurl和XML包,使用我的参数发布"表单",然后读取结果页面的html.
我最近的努力看起来像这样:
library(RCurl)
library(XML)
curl = getCurlHandle()
link = "http://indiawater.gov.in/IMISReports/Reports/WaterQuality/rpt_WQM_HabitationWiseLabTesting_S.aspx"
html = getURL(link, curl = curl)
params = list('ctl00$ContentPlaceHolder$ddFinYear' = '2005-2006',
'ctl00$ContentPlaceHolder$ddState' = 'BIHAR')
html2 = postForm(link, .params = params, curl = curl)
table = readHTMLTable(html2 )
Run Code Online (Sandbox Code Playgroud)
我真的很难说我遇到了什么问题.一方面html == html2产生错误,所以我认为html2在提交表单后已经进展到某个点,但是如果表单提交不正确或者如果有效并且它的读数是那张桌子没用.
任何建议和帮助表示赞赏.谢谢!
我正在尝试使用我的凭据登录到.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
请帮我理解这个问题
我正在尝试从https页面下载文件,该页面需要按"我同意"按钮然后存储cookie.如果这个答案在某个地方显而易见,我道歉
当我直接在Chrome中打开网页并单击"我同意"时,文件开始自动下载.
我试图复制这个例子,但我不认为hangseng网站实际上存储了cookie /身份验证,所以我不知道这个例子是否应该是我需要的.
除此之外,我认为SSL使身份验证变得复杂,因为我认为getURL()调用将需要证书规范,如cainfo = system.file("CurlSSL","cacert.pem",package ="RCurl"))
我太过RCurl的初学者了解这个网站是否相当困难,或者我是否只是遗漏了一些明显的东西.
谢谢!
r ×10
rcurl ×10
curl ×2
web-scraping ×2
devtools ×1
download ×1
ftp ×1
ggplot2 ×1
github ×1
html ×1
httr ×1
installation ×1
login ×1
macos ×1
performance ×1
post ×1
rvest ×1
ssl ×1
time-series ×1
web ×1