请选择
进入手机版
|
继续访问电脑版
签到
苹果/安卓/wp
苹果/安卓/wp
客户端
0.0
0.00
推广加币
数据VIP
升级SVIP
注册
|
登录
项目交易
CDA数据分析师
CDA网校
CDA社区
CDA认证考试
CDA俱乐部
CDA Live
在线教育
JG学术培训
经管云课堂
CDA网校
CDA数据分析研究院
统计软件培训
金融科技
就学培训网
经管题库
培训证书查询
成为签约讲师
经管文库
专家入驻
学术博客
就学平台
美国在职研究生
论坛BBS
服务一览
VIP服务
数据VIP
贵宾服务
数据库
兑换商城
广告服务
案例库
软件销售
校园代理
文献下载
会员课服务
我的
帖子
收藏
好友
我的空间
关注的人
关注的贴
找人
文库
任务
道具
勋章
网站地图
搜索
搜索
用户
人大经济论坛
›
标签
›
浏览器
标签: 浏览器
经管大学堂:名校名师名课
相关帖子
版块
作者
回复/查看
最后发表
[下载] 三本国外统计学基础教材以及djvu浏览器
计量经济学与统计软件
lulu0220
2009-1-20
15
4895
tianwk
2019-4-8 22:13:45
后缀CAJ文件的浏览器
计量经济学与统计软件
admin
2008-8-2
2
3738
枫回路转
2016-1-11 20:25:39
事件研究法-贝塔值-创业板指数据导出
计量经济学与统计软件
yclxb0327
2013-3-29
3
4773
滴露草叶
2015-7-31 21:10:24
论坛长方形头像设置教程
站务与外事
绵阳
2013-2-25
6
4702
1道疤
2013-4-13 10:35:52
12年CPA综合阶段6科核心专题精讲(MP3+讲义)
会计与财务管理
夜色之下2
2013-3-14
1
1630
jin9tian
2013-3-14 15:08:13
关于使用Chrome浏览器打开论坛乱码问题
站务与外事
52beyond12
2013-1-15
2
3196
52beyond12
2013-1-16 21:18:59
[下载]英汉经济计量学词汇(附pdg浏览器)
计量经济学与统计软件
yishirl
2006-3-23
4
2136
milkchen
2011-10-17 23:59:17
绿色简易数据库浏览器
计量经济学与统计软件
graceup
2005-9-12
5
2633
graceup
2011-10-9 07:49:53
简易超星浏览器
计量经济学与统计软件
leefey
2004-12-13
6
3985
zhaocan
2011-10-1 09:58:09
新手必读:上传下载说明、浏览器、版主助理与贵宾名单、博士资助(7月19日更新)
制度经济学
nie
2004-11-6
13
10294
nie
2011-9-30 16:02:35
[转帖]超星图书浏览器(SSReader) v4.00 Bulid 0406 中文绿色版
休闲灌水
vagulovlun
2007-7-8
1
1966
博士30岁
2009-1-15 17:57:00
[推荐]浏览器的内核(详细版)
休闲灌水
shwany
2008-9-7
2
4405
shwany
2008-9-7 12:54:00
哪位大虾能传个不用注册的超星浏览器
微观经济学
zhengzn
2007-4-15
1
2130
l-fz
2007-4-15 10:30:00
[转帖]怎样设置使PDF文件不在浏览器中直接打开
金融学(理论版)
鲤鱼精
2006-3-4
1
9685
zhaosl
2006-3-5 01:32:00
更多...
相关日志
分享
20160425-26
jennyxyy
2017-4-26 18:58
25的我看了!但是现在被删了!还好我看了.26的老公没更新,老公还说下了一个浏览器很快,还说很想我也不更新个rd,老公坏。
0
个评论
分享
【转medo】R不务正业之RCurl
zelision
2015-7-16 09:36
首先感谢COS论坛同意我在这篇水文中用RCurl做一些简单的演示,但由这些功能的延展而给COS论坛造成的任何损失或破坏,请各位自己负责。 一、 RCurl 是什么 混迹于各大社区,经常会看到关于浏览器之争的口水战:某某浏览器的市场份额如何如何,某某浏览器的速度如何如何,某某浏览器支持的功能多么强大等等。各个网友也根据自己的喜好,将自身归档于某某浏览器阵营,以此找些心灵的归属。估计类似的口水之争将永远的进行下去(是啊,不然闲着干什么呢?)。如果换个角度看这些争论,也正反应出浏览器在大家日常生活中的地位:想想每天坐在电脑前,用的最多的软件是什么呢?但是提到浏览器阵营中的 cURL ——一款杀人放火、居家旅游必备的命令行浏览器,则普及率要不少。可它的功能绝不逊色于我们日常用的各大浏览器。 R 的 RCurl 包是对cURL库—libcurl的封装。感谢 Duncan Temple Lang 等牛人的无私工作,我们才可以在R中运用cURL,将R和cURL这两大开源利器的优势完美的结合到一起。 二、用 RCurl 浏览网页 想想我们平时绝大部分时间是怎么用浏览器的?第一步:打开自己钟爱的那款浏览器;第二部:输入某个网址,如 http://cos.name/ ;第三部:回车;第四步:拖拖鼠标,看自己想看的东西;第五步:点进某个链接,接着看。在关注呈现的信息的时候,大多数人都不大会去关心上述的5步(或者更多步)中浏览器(客户端)和网站(服务器端)是如何工作的。其实客户端和服务器端一直在保持联系:告诉对方想干什么,是否同意等等内容?比如我们浏览 http://cos.name/ 时,浏览器给服务器端提交了如下的一些内容: GET /HTTP/1.1 Host:cos.name User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6) Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language:en-us Accept-Encoding:gzip,deflate Accept-Charset:GB2312,utf-8;q=0.7,*;q=0.7 Keep-Alive:300 Connection:keep-alive 通过上面的头信息,浏览器除了告诉 COS 服务器想浏览哪些内容,还告诉对方用了什么浏览器、想要什么样的数据格式、用什么协议/方法接收等非常细节的内容。COS服务器收到这些请求后,同样会提供一个物品清单: HTTP/1.x200 OK Date:Fri, 01 Jan 2010 13:11:20 GMT Server:Apache/2.2.14 (Unix) X-Powered-By: PHP/5.2.11 X-Pingback: http://cos.name/xmlrpc.php Vary:Accept-Encoding Content-Encoding:gzip Content-Length:13973 Keep-Alive:timeout=10, max=30 Connection:Keep-Alive Content-Type:text/html; charset=UTF-8 通过这个清单,COS服务器告诉客户端:服务器是什么配置、你的协议我接受了、我给你的内容是什么格式等等信息。 当用RCurl这款客户端时,我们需要一一配置提交给服务器的内容,所以不妨先随心所欲、照葫芦画瓢的模仿一下上面的头信息: myHttpheader- c( "User-Agent" = "Mozilla/5.0(Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6)" , "Accept" = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" , "Accept-Language" = "en-us" , "Connection" = "keep-alive" , "Accept-Charset" = "GB2312,utf-8;q=0.7,*;q=0.7" ) 然后可以运用getURL函数实现cURL的网页浏览: temp- getURL( "a href=" http: //cos.name/quot" rel="nofollow"http://cos.name/quot ;,httpheader=myHttpheader) 返回值temp为一个字符串,其实就是我们用普通浏览器的“页面另存为”-“html文件”中所包含的内容。 如何看getURL的头信息呢?不妨再多设定几个RCurl的参数: d =debugGatherer() temp- getURL( "a href=" http: //cos.name/quot" rel="nofollow"http://cos.name/quot ;,httpheader=myHttpheader, debugfunction=d$update,verbose= TRUE) 此时d中包含了你所要的信息,其中: cat(d $value () ) 中为RCurl提交服务器的头信息,而 cat(d $value () ) 中为服务器端返回的头信息。看看跟正常浏览器的交互内容是不是一样呢?怎么看一般浏览器的头信息呢?如果你用Firefox的话,用扩展 Live http headers 就可以了。 三、 RCurl 的 Handles 在RCurl的目前版本中,有170多个(!!!!!!!!!)cURL系统参数可以设置,具体可以用 names(getCurlOptionsConstants()) 查看一下,各个参数的详细说明则可以参照libcurl的官方 说明文档 。 如此众多参数,如果每次都设定,是不是会非常的繁琐?幸好在RCurl中有一个非常强大的功能可以有效的解决这个问题:那就是cRULhandles(当然,cRUL handles的优势不止这一个)。cRULhandles类似于行走江湖的一个百宝箱:根据自己的喜好设好后,每次背箱出发就行了。同时cRULhandles还根据客户端、服务器端参数的设定在动态的变化,随时更新内容。如下便定义了一个最基本的cRULhandles: cHandle- getCurlHandle(httpheader = myHttpheader) 在getURL中可以如下应用: d =debugGatherer() temp - getURL( "a href=" http: //cos.name/quot" rel="nofollow"http://cos.name/quot ;, .opts = list(debugfunction=d$update,verbose = TRUE), curl=cHandle) 此时,cHandle中的cRUL系统参数debugfunction、verbose均发生及时的更新。 四、用 RCurl 实现直接登录 上面提及的getURL函数仅仅实现了页面浏览的最简单功能。如果想用RCurl登录到某个网站(如http://cos.name/bbs/)怎么实现呢?还是继续看看你在正常登录过程中,客户端提交给服务器端的信息吧,然后照葫芦画一个。 http://cos.name/bbs/login.php ? POST/bbs/login.php? HTTP/1.1 Host:cos.name User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.6)Gecko/20091201 Firefox/3.5.6 Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language:en-us Accept-Encoding:gzip,deflate Accept-Charset:GB2312,utf-8;q=0.7,*;q=0.7 Keep-Alive:300 Connection:keep-alive Referer: http://cos.name/bbs/login.php Content-Type:application/x-www-form-urlencoded Content-Length:110 forward=jumpurl=http%3A%2F%2Fcos.name%2Fbbs%2Fstep=2lgt=0pwuser=yournamepwpwd=yourpwhideid=0cktime=31536000 这个头信息的核心就是客户端用POST方法给 http://cos.name/bbs/login.php ?提交了一个字符串(即头信息最后的两行,其中包含了你的用户名和密码),请求服务器端给予身份认证。至于为什么提交那么稀奇古怪的一串字符,就要问谢老大了:)。 如果要让RCurl提交相同的字符串,需要将上面的那段关键字符串转变成如下的格式: c(name1=”info1”,name2=”info2”,…)。字符串的处理工作交给R就行了: myPost- function (x){ post -scan(x,what= "character" ,quiet= TRUE ,sep= "\n" ) abcd=strsplit(post, "" ) ] abc=gsub( "(^.*)(=)(.*$)" , "\\3" ,abcd) abcnames=gsub( "(^.*)(=)(.*$)" , "\\1" ,abcd) names(abc)=abcnames return (abc) } postinfo- myPost( "clipboard" ) 然后用RCurl中的postForm函数,将postinfo提交给服务器: temp- postForm( "a href=" http: //cos.name/bbs/login.php?quot" rel="nofollow"http://cos.name/bbs/login.php?quot ;,.params=postinfo, .opts= list (cookiefile= "" ),curl=cHandle,style= "post" ) 用 cat(d $value () ) 查看一下cos.name给你的客户端反馈了那些内容?作为登录认证的cookies是不是已经在里面了?到这一步,RCurl已经成功的登录到 http://cos.name/bbs/ 了,需要的一切认证信息都已经记录到百宝箱cHandle中了。用 getCurlInfo(cHandle) ] 看看你想要的cookie是不是在那里了?接着用cHandle登录一下 R子论坛 吧,验证一下你是否真正的成功了? temp- getURL( "a href=" http: //cos.name/bbs/thread.php?fid=15quot" rel="nofollow"http://cos.name/bbs/thread.php?fid=15quot ;, curl=cHandle,.encoding= "gbk" ) 五、用 RCurl 实现间接登录 由于“ 这事儿不能说太细 ”,我们有时候不能用上面的方法来完成RCurl登录认证。那能不能让RCurl来使用其他浏览器客户端与服务器端已经建立好的认证呢?答案是可以尝试一下的:)所谓的认证信息一般就是服务器端在你的浏览器里面写下的cookies,把他们导出来交给RCurl,RCurl同样可以做好你需要的cURLhandle。 先用你的常规浏览器(此处假定为Firefox)正常登录到 http://cos.name/bbs/ ,然后再用Firefox的扩展Firecookie看看当前页面的cookie信息:你需要的就是它们了。将这些cookie信息导出成RCurl 能够识别的格式 ,然后提交给RCurl就万事大吉了。 d2 =debugGatherer() cHandle2 - getCurlHandle ( httpheader = myHttpheader,followlocation=1, debugfunction = d2$update,verbose=TRUE, cookiefile = "yourcookiefile.txt" ) 接着去cos.name的 R论坛 看看: temp- getURL( "a href=" http: //cos.name/bbs/thread.php?fid=15quot" rel="nofollow"http://cos.name/bbs/thread.php?fid=15quot ;, curl=cHandle2,.encoding= "gbk" ) 验证一下temp里面是不是已经有你的大名了呢? grep( "yourname" ,temp) 如果有的话那么恭喜你:RCurl已经成功接管你的登录权限了。 六、登录后 RCurl 能继续干什么 实现了登录认证的RCurl handles,这仅仅是第一步。能用它和R+RCurl继续做些什么呢?这时候,只要闭上眼睛、海阔天空的想一下平时怎么样用浏览器就有答案了: 1、能不能让RCurl帮我数一下某VIP网络俱乐部中王小麻子灌了多少水? 2、能不能帮顶一下王二麻子发表的美女yy贴? 3、为了给我的外甥女选秀投票,点鼠标点的手都抬不起来了,能不能让RCurl来帮我做呢? 4、我天天去某网站下载文档,绝对的体力活! 5、半夜起来偷菜,太困了,交给RCurl做就好了。 6、用RCurl玩twitter、写博客就好了。 7、我就想用RCurl看门户网站的体育新闻。 8、我就想在各个网站的论坛上发个“顶”字,顺便留下我的牛皮膏药小广告。 9、…… 天有多高,RCurl有多强…… 七、结束语 没有想到会唠叨这么多的废话。但这篇水文仅涉及到libcurl、RCurl中的一点皮毛而已,更多的内容请参考DuncanTemple Lang写的RCurl 帮助文档 和 libcurl官网 。客观讲cURL属于浏览器中的一把 剪刀 ,由于它强大的易编程属性,RCurl会带来一些意想不到的破坏性。但要记住:技术本身可能是无罪的,任何的破坏都可能是我们自己造成的。网络中的ID是现实中你的一个延伸,她同样有完整的人格和生命力,所以请尊重和爱护网络中的自己。 最后,希望这篇水文没有影响到你的好心情。
个人分类:
R_D_PG
|
0
个评论
更多...
京ICP备16021002-2号
京B2-20170662号
京公网安备 11010802022788号
论坛法律顾问:王进律师
知识产权保护声明
免责及隐私声明
GMT+8, 2024-4-18 07:25
积分 0, 距离下一级还需 积分