左手用R右手Python系列——模拟登陆教务系统

本文介绍了使用R语言的RCurl和httr包,以及Python进行网络数据抓取时如何解决模拟登录教务系统的验证码问题。通过开启cookie管理,确保登录请求与后续请求在同一进程中,实现验证码的处理和登录状态的维持。同时提供了R和Python的代码示例,帮助读者理解和应用。
摘要由CSDN通过智能技术生成

杜雨,EasyCharts团队成员,R语言中文社区专栏作者,兴趣方向为:Excel商务图表,R语言数据可视化,地理信息数据可视化。个人公众号:数据小魔方(微信ID:datamofang) ,“数据小魔方”创始人。


最近在练习R语言与Python的网络数据抓取内容,遇到了烦人的验证码问题,走了很多弯路,最终总算解决了。

在分享这篇文章之前,只想感慨一声,虽然Python拥有更为完善的爬虫生态和多如牛毛的爬虫分享课程,但是貌似这些大部分内容,使用R语言中的RCurl+httr都可以做到,但是可惜的利用R语言学习爬虫的爱好者与Pythoner相比,实在是太少了,R语言的高阶爬虫教程凤毛麟角,只能一点一点儿在stackflow上面搜罗整理。

希望我的这一篇案例能给大家带来一点儿可借鉴的思路。

R

library("RCurl")
library("XML")
library("dplyr")
library("ggplot2")
library("ggimage")

使用爬虫登录教务系统,最大的困难是验证码识别。通常来讲,你首次访问教务处的登录页,会激活验证码请求,输入验证码和账号密码,点击登录按钮则激活一个提交数据的POST请求。前后是在同一个进程中处理的,所以你不用担心前后cookie不一致的问题。

可是如果是使用爬虫来登录,你需要使用cookie管理功能,自动记忆登录时的cookie,让两个请求绑定在一个进程里,这样后续所有的请求都会自动复用第一次登录的cookie,你可以完成所有子网页的请求与遍历。


以下是教务处的登录和验证码请求地址:

login<-"http://202.199.165.193/loginAction.do"
Codein<-"http://202.199.165.193/validateCodeAction.do"
#构造报头:
header = c(    
     "Accept"="text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8",
     "Connection"="keep-alive",
     "User-Agent"="Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36",
     "Content-Type"="application/x-www-form-urlencoded"
      )
#构造账号、密码、验证码(留空)构成的表单体
payload<-c(zjh="*******",mm="*****",v_yzm="")

使用cookie管理器:


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值