python爬取教务系统

本文介绍了如何使用Python爬虫模拟登录教务系统,包括解析验证码、提交登录信息、模拟登录、分析课表页面、爬取页面内容,并通过多线程保存数据到Excel文件。详细步骤包括Fiddler抓包获取关键URL和参数,以及利用xlwt库保存数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

其实,自己是一直打算爬取教务系统的,可是懒啊懒,懒啊懒,就一直懒到现在了。所以,寒假开始,痛改前非,重新做人,就稍微接触了一些python的知识,用来爬取每个学生都梦寐以求的教务系统。

前期准备

教务系统页面解析

首先,我们看看,教务系统页面长啥样?

这里,我们需要注意两点:

  1. 验证码的获取。
  2. 登陆时提交的信息。

验证码获取

这里,我们只需要进行抓包即可,这里我选择使用Fiddler进行抓包。首先打开Fiddler,然后刷新一下教务系统的界面即可。

我们在这里能够看到,获取验证码的URL是:http://210.42.121.241/servlet/GenImg

所以,我们就可以这样一步一步来获取我们需要的信息。

  1. 提交请求到:http://210.42.121.241/servlet/GenImg
  2. 下载验证码到本地,进行读取。(因为我也是刚接触python,所以这里就下载下来手动读取了,后面学习过程中,我会尝试用机器进行读取的)
  3. 输入验证码,提交到登陆请求,保存cookies。(这一步是很重要的)

登陆时提交信息

怎么取提交道路请求呢,我们继续来抓包。先清空Fiddler中的信息,然后在网页上输入学号,密码,验证码,点击登陆,就可以看到抓包信息了。

  1. http://210.42.121.241/servlet/Login是登陆的URL。

  2. 提交的请求包括三个参数:

    {
        id: 学号
        pwd: 密码
        xdvfb: 验证码
    }

这样,我们就可以模拟取提交请求,并登陆到我们的教务系统啦~

模拟登陆

好,那么我们现在就用python开始模拟登陆。

def get_cookie():
    # 验证码地址和登陆地址
    base_url = "http://210.42.121.241/servlet/GenImg"
    login_url = "http://210.42.121.241/servlet/Login"

    # 将cookie绑定到一个opener,cookie由cookielib自动管理
    cookie = cookielib.MozillaCookieJar("file.txt")
    handler = urllib2.HTTPCookieProcessor(cookie)
    opener = urllib2.build_opener(handler)

    # 用户名和密码
    username = "xxxxxxxxxxxxxxx"
    password = "xxxxxxxxxxxxxxx"

    # 用opener访问验证码地址,获取验证码
    picture = opener.open(base_url).read()
    # 保存验证码到本地
    local = open("image.jpg", "wb")
    local.write(picture)
    local.close()

    # 输入验证码,并构造表单
    secret_code = raw_input("请输入验证码:")
    data = {
        'id': 'xxxxxxxxxxxx',
        'pwd': 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
        'xdvfb': secret_code
    }

    # 根据抓包信息,构造headers
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Connection': 'keep-alive',
        'Content-Length': 64,
        'Content-Type': 'application/x-www-form-urlencoded',
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
    }

    # 获取数据,保存
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值