全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
3518 2
2015-05-02
                                 首先感谢COS论坛同意我在这篇水文中用RCurl做一些简单的演示,但由这些功能的延展而给COS论坛造成的任何损失或破坏,请各位自己负责。
一、RCurl是什么
混迹于各大社区,经常会看到关于浏览器之争的口水战:某某浏览器的市场份额如何如何,某某浏览器的速度如何如何,某某浏览器支持的功能多么强大等等。各个网友也根据自己的喜好,将自身归档于某某浏览器阵营,以此找些心灵的归属。估计类似的口水之争将永远的进行下去(是啊,不然闲着干什么呢?)。如果换个角度看这些争论,也正反应出浏览器在大家日常生活中的地位:想想每天坐在电脑前,用的最多的软件是什么呢?但是提到浏览器阵营中的cURL——一款杀人放火、居家旅游必备的命令行浏览器,则普及率要不少。可它的功能绝不逊色于我们日常用的各大浏览器。R[/url]的RCurl[/url]包是对cURL库—libcurl的封装。感谢Duncan Temple Lang[/url]等牛人的无私工作,我们才可以在R中运用cURL,将R和cURL这两大开源利器的优势完美的结合到一起。
二、用RCurl浏览网页
想想我们平时绝大部分时间是怎么用浏览器的?第一步:打开自己钟爱的那款浏览器;第二部:输入某个网址,如http://cos.name/[/url];第三部:回车;第四步:拖拖鼠标,看自己想看的东西;第五步:点进某个链接,接着看。在关注呈现的信息的时候,大多数人都不大会去关心上述的5步(或者更多步)中浏览器(客户端)和网站(服务器端)是如何工作的。其实客户端和服务器端一直在保持联系:告诉对方想干什么,是否同意等等内容?比如我们浏览http://cos.name/[/url]时,浏览器给服务器端提交了如下的一些内容:
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[/url]服务器想浏览哪些内容,还告诉对方用了什么浏览器、想要什么样的数据格式、用什么协议/方法接收等非常细节的内容。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:能够识别的格式,然后提交给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=15&quot" rel="nofollow">http://cos.name/bbs/thread.php?fid=15&quot</a>;,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帮助文档[/url]和libcurl官网。客观讲cURL属于浏览器中的一把剪刀,由于它强大的易编程属性,RCurl会带来一些意想不到的破坏性。但要记住:技术本身可能是无罪的,任何的破坏都可能是我们自己造成的。网络中的ID是现实中你的一个延伸,她同样有完整的人格和生命力,所以请尊重和爱护网络中的自己。
最后,希望这篇水文没有影响到你的好心情。
                       

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-5-2 17:00:17
提示: 作者被禁止或删除 内容自动屏蔽
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-5-2 19:37:39
ryoeng 发表于 2015-5-2 17:00
http://cos.name/cn/topic/17816/

除了RCurl 和XML,还有 rvest,httr 和 xml2 程序包。
谢谢,我想自己试试做 (社会网络分析:探索人人网好友推荐系统 陈逸波) 可是看着他的代码做不出来,不知道是否代码错了,可否将代码发我一份 谢了  yun156@qq.com
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群