python提前查成绩_Python爬虫案例——正方教务学生成绩获取(自动识别验证码)...

本文介绍了如何使用Python爬虫自动登录正方教务系统,包括解析登录所需数据、处理验证码、获取个人成绩等步骤。通过分析网页源码和使用requests、BeautifulSoup等库,实现了验证码的自动识别,最后讨论了可能的优化方向和注意事项。
摘要由CSDN通过智能技术生成

刚刚进入假期,学校开放了期末成绩查询,奈何正方教务的各种卡顿。很多学弟学妹问有没有好办法能够解决,闲来无事写了一段自动获取的爬虫程序练练手。

环境Python3.7

Jupyter

主要库requests

BeautifulSoup

PIL

pandas

老气的登录界面...

一、分析及获取登录提交数据

首先观察网页,由于这个地方比较简单,我们就使用Chrome的开发者工具中的Network抓包。

把css 图片之类的过滤掉,发现了包含学号、密码等内容的表单被提交到default2.aspx

分析POST过去的字段

总共提交了9个参数(因学校而异,不过关键字段都差不多),其中txtUserName是学号、TextBox2是密码、RadioButtonList1是学生选项(登录身份选项),还有个txtSecretCode是验证码。

除了这些常规数据外,我发现还有__VIEWSTATE这种特殊字段,这里做一个简要介绍。__VIEWSTATE:

ViewState是http://ASP.NET中用来保存WEB控件回传时状态值一种机制。在WEB窗体(FORM)的设置为runat="server",这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值。

ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能。它的类型是system.Web.UI.StateBag,一个名称/值的对象集合。

当请求某个页面时,http://ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端。当客户端把页面回传时,http://ASP.NET分析回传的窗体属性,并赋给控件对应的值。

现在我们知道这个字段肯定是不可缺少的,那么它们可以从哪获取到呢?

我们右键查看网页的源代码,在源代码中发现了type为hidden的输入框,它们的值正是我们所需要的

在这个地方,我们可以构造一个login_info字段作为登录数据:

# post的登录数据

login_info = {

"__

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值