各位大神好,新手上路,请多多关照!
问题如下:
我想在这个网站抓数据下来,但是捏,需要会员登录。
在google后发现RCurl可以让R登录网站:
library(RCurl)
mycurl <- getCurlHandle()
agent <- "Mozilla/5.0"
curlSetOpt(cookiejar = "", followlocation = TRUE, useragent = agent, autoreferer = TRUE, curl = mycurl) ## save cookies
params <- list(
"username" = "myusername",
"password" = "mypassword"
)
html <- postForm('http://www.sxcoal.com/user/login.aspx', .params = params, curl = mycurl)
但是发现无法登录,原因可能是这样:虽然login.aspx页面嵌在了包含数据的页面里面,但实际,login.aspx应该是这样的。
研究了一下网页的Header之后发现问题可能是因为login.aspx需要除了用户名和密码外三个东西,
第一个是 “__VIEWSTATE"
第二个是 "__EVENTVALIDATION"
第三个也是最麻烦的是 "CheckCode" ----- 图片验证码。
完全不懂网页代码的我搜了半天找到了前两个的解决办法:
html <- getURL('http://www.sxcoal.com/user/login.aspx', curl = mycurl) ##让R刷新网页
viewstate <- as.character(sub('.*id="__VIEWSTATE" value="([0-9a-zA-Z+/=]*).*', '\\1', html)) ##保存___VIEWSTATE值
eventvalidation <- as.character(sub('.*id="__EVENTVALIDATION" value="([0-9a-zA-Z+/=]*).*', '\\1', html)) ##保存__EVENTVALIDATION值
然后在定义params时加上"__VIEWSTATE"和"__EVENTVALIDATION"相应的数值,但是最恶心的验证码怎么办?
跪求巨巨指点明路!!!!!
|