python爬虫登录正方教务管理系统获取成绩数据_使用python爬取方正教务系统的成绩 出成绩后发短信 发邮件(一)...

这是上学期期末的时候,为了查成绩,然后去现学了python,然后根据网上的教程去模仿写的一个获取教务系统成绩的爬虫。后面加上了腾讯云的短信服务还有qq邮箱smtp发件服务。判断是否出了成绩,然后给我发短信,发邮件。哈哈。然后这学期开学就涉及到找实习的事,所以一直拖到现在闲一点,把这个坑补上。

Python 版本3.6.3 需要安装几个库,看运行报错自行安装即可。

我看其他的学校有的是可以把Default2.aspx改为Default3.aspx Default4.aspx之类的 就可以跳过验证码,但是我们学校好像做的挺好的,都需要验证码。那我们来看看验证码的地址。

好像是一个地址。我们打开把那串随机值加上,打开这个地址看看。

我们看到,可以通过地址来获取验证码。但是这个验证码的识别不是很好做,所以我们还是来手动输入验证码的值,然后尝试登录。 我们拦截一下登录请求。

我们看到有一个__VIEWSTATE,好像也是一串随机值,但是跟地址栏那个不一样。这个也是一个随机验证。我们看看登陆页的源码,找找这个东西在哪里。

找到了,就是一个隐藏在源码里的一个随机值,在登录的时候需要传过去,那我们就获取一下传过去就可以了。

其他的就是账号密码,验证码。还有一个这个东西。

我们看看这个编码后是什么值。

就是一个死值,那我们直接传过去即可。我们看看登录需要的参数如下。

1

2

3

4

5

6

7

8

9

10

11data={

'\_\_VIEWSTATE':\_\_VIEWSTATE,

'txtUserName':'学号',

'TextBox2':'密码',

'txtSecretCode':code,

'RadioButtonList1':'%D1%A7%C9%FA',

'Button1':"",

'lbLanguage':'',

'hidPdrs':'',

'hidsc':'',

}

那我们来捋一下思路。如何用python模拟登录。

1.首先获取jwxt.i.cqut.edu.cn的源码

5.我们输入验证码,构造请求,去post请求,登录。

以下是登录的代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51#-*-coding:utf-8-*-

import os

import re from lxml

import etree

import requests

import sys from bs4

import BeautifulSoup

import smtplib from email.mime.text

import MIMEText

import threading

import time from qcloudsms\_py

import SmsSingleSender from qcloudsms\_py.httpclient

import HTTPError

#访问教务系统,前面分析过了,提交数据时要用这个值。先得到\_\_VIEWSTATE的值。

s = requests.session()

url = "http://jwxt.i.cqut.edu.cn"

response = s.get(url)

#获取到有随机值的地址

newUrl = response.url

#获取\_\_VIEWSTATE值

selector = etree.HTML(response.content)

\_\_VIEWSTATE = selector.xpath('//*\[@id="form1"\]/input/@value')\[0\]

#获取验证码

imgUrl = newUrl.replace('Default2.aspx','CheckCode.aspx')

imgresponse = s.get(imgUrl, stream=True)

image = imgresponse.content #保存验证码

if os.path.exists(r'f://yanzheng.jpg'):

os.remove(r'f://yanzheng.jpg')

with open(r'f://yanzheng.jpg','wb')as f:

f.write(image)

f.close()

#打开验证吗

os.startfile(r'f:yanzheng.jpg')

#手动输入验证码

code = input("输入弹出的验证码: ")

#构造参数

data={

'\_\_VIEWSTATE':\_\_VIEWSTATE,

'txtUserName':'学号',

'TextBox2':'密码',

'txtSecretCode':code,

'RadioButtonList1':'%D1%A7%C9%FA',

'Button1':"", 'lbLanguage':'',

'hidPdrs':'', 'hidsc':'',

}

#提交表头,里面的参数是电脑各浏览器的信息。模拟成是浏览器去访问网页。

headers={

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

}

#登陆教务系统

response = s.post(newUrl,data=data,headers=headers) print(response.content.decode('gb2312'))

然后我们运行一下,看看结果。

可以看到我们已经登录成功了。这是第一步,下一个文章来写我们如何去获取成绩并发邮件,发短信等功能。 使用python爬取方正教务系统的成绩 出成绩后发短信 发邮件(二)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值