找回密码
 立即注册
查看: 5254|回复: 2

从网页上抓数据----登录需要验证码

[复制链接]
发表于 2013-11-13 11:43:39 | 显示全部楼层 |阅读模式
各位大神好,新手上路,请多多关照!

问题如下:
我想在这个网站抓数据下来,但是捏,需要会员登录。

在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"相应的数值,但是最恶心的验证码怎么办?

跪求巨巨指点明路!!!!!


回复

使用道具 举报

发表于 2015-5-12 17:34:59 | 显示全部楼层
同求,我也找了好久关于图片验证的问题,不过,据说通过cookie可以解决部分网站的这种问题,具体没试成功过
回复

使用道具 举报

发表于 2015-5-15 15:17:21 | 显示全部楼层
有没有完整地抓取数据代码?RCurl方面完整的代码没发现。。有点想转python了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|R语言中文网

GMT+8, 2024-11-25 20:17 , Processed in 0.020781 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表