转载请注明出处啊喂!
http://blog.csdn.net/jansii/article/details/38757627
看一眼Temple Lang提供的RCurl介绍文档,里面看起来函数不少,但例子又不多,足够让人看得七荤八素了。
以下是自己总结的RCurl三大函数,三个大boss。
简而言之,getURL读脚本,getForm提交URL可见的参数再读回响应体,postForm提交隐藏的数据再得到返回结果。
当然如果想要完成爬虫功能的话,会字符串处理功能那是极好的,不会的话……就去学吧。
上篇文章 “RCurl来了-从数据抓取讲起” 已经总结了浏览器与服务器交互过程以及相应问答信息,这里就不赘述了,说说看如何用RCurl把这些参数调出来看吧。
首先一个小函数
###url.exists
url.exists("http://www.baidu.com")
url.exists("ftp.wcc.nrcs.usda.govx")
会返回“TRUE”或“FALSE”回答此URL是否存在。也就是说当我们后面要抓网页的时候,大可使用以下的防御式编程模式:
if( url.exists(URL) ){ cat("get it!") }
来防止读取出错。
d= debugGatherer()
#设置一个用来回传信息的函数,会累积,可重新跑几次看看
temp<- getURL("http://www.dataguru.cn",debugfunction=d$update,verbose= TRUE)
d的value中就已经包含了交互的信息,可以用cat进行查看~
同样的道理,basicTextGatherer()以及basicHeaderGatherer()跟debugGatherer()的作用是类似的,
可以用来查看服务器端返回的头信息,前者是字符串形式,后者返回列表形式(比较容易看辣)
截个图证明我没有说谎:
通过以下方法返回的信息更加丰富,包括响应时间、连接时间等等。如果我们在测试代理服务器的效用,也就是它的响应时间长短,就可以用这个提取出来:
curl= getCurlHandle()
destination=getURL("http://www.dataguru.cn/",curl = curl)
getCurlInfo(curl)
names(getCurlOptionsConstants())通过这个指令可以查看参数,有170+个之多
不赘述,需要的时候就查了用吧。可以参考curl,甚至从pycurl一窥究竟呢~
用GoogleHK测试一下getForm,反应很慢……
getForm("http://www.google.com.hk/search",q ="RCurl",hl = "en", ie = "ISO-8859-1", oe = "ISO-8859-1",btnG = "Google+Search")
postForm复杂多了……
等有空再更……