最近几天一直在学习这个帖子,发现了代码中的一个错误。原文中用RCurl直接登录的代码,如下:
d2 = debugGatherer()<br />
cHandle2<- getCurlHandle(httpheader=myHttpheader,followlocation=1,<br />
debugfunction=d2$update,verbose=TRUE,<br />
cookiefile="yourcookiefile.txt")
我自己试验了一下,在统计之都论坛登录后将 Request Headers 里的cookie存文件cookie.txt里,赋值给cookiefile,得到cHandle2,再用
temp = getURL("http://cos.name/cn/", curl=cHandle2)
抓到的网页和未登录的网页是一样的。</p>
成功的案例是:将登录后 Request Headers 里的cookie作为字符串赋值给cookie2,然后用
cHandle = getCurlHandle(cookie=cookie2)<br />
temp2 = getURL("http://cos.name/cn/", curl=cHandle)
即可获得登录后的页面。虽然用
getCurlInfo(cHandle)[["cookielist"]]
查看cookielist的值仍是空值,但不影响抓取。</p>
个人对 getCurlHandle() 的感觉是这个函数很好用,可以返回一个CurlHandle类对象,但是参数有175个之多,太复杂了,而且像httpheader这种参数很难设置。其实不传任何参数也可以正常使用——在 getURL() 中给参数curl赋值,所以如果不是必须设cookie之类,大可不传参数直接使用,虽然简单粗暴了点[s:11]。