fishc-coy 发表于 2018-4-2 23:35:32

python登陆教务系统爬取以及生成个人excel课表

本帖最后由 一个账号 于 2020-3-28 11:13 编辑

好像不隐藏回没人回帖,隐藏一下好啦。

# -*- coding: utf-8 -*-
"""
Created on Wed Mar 21 11:27:08 2018

@author: coyota
"""
try :
    import requests
    from PIL import Image
    import time
    import re
    import openpyxl
except Exception as reason:
    print("存在未成功安装的库,请确认安装后重新运行\n")
    print("keyword:",reason)


def get_vrifycode_session():   #获取验证码以及构建session
    Atimer = int((time.time())*1000)
    sessions = requests.Session()
    VerifyCode_url = 'http://jxfw.gdut.edu.cn/yzm?d='+str(Atimer)
    r = sessions.get(VerifyCode_url)
    r= r.content
    with open("v.jpg","wb") as i:
      i.write(r)
    img = Image.open("v.jpg")
    img.show()
    img.close()
    return sessions


def makezcs(kbxx):   #整理课表中上课周次为指定格式
    for item in kbxx :
      zcs = list(eval(item["zcs"]))
      zcs.sort()
      flag = 1
      during = []
      content = []
      for i in range(1,len(zcs)) :
            if zcs == zcs + 1 :
                flag += 1
            else :      
                during.append(flag)
                flag = 1
      during.append(flag)
      flag = 0
      for i in during :
            if i == 1:
                content.append(str(zcs)+"周")
            else :
                content.append(str(zcs)+"-"+str(zcs)+"周")
            flag += i
      for i in content :
            if i == content :
                str1 = str(i)
            else :
                str1 = str1 + "&" + str(i)
      item["zcs"] = str1
    return kbxx


def makejcdm2(kbxx): #整理课表中上课星期、节次为指定格式
    weekname = ["","周一 ","周二 ","周三 ","周四 ","周五 ","周六 ","周日 "]
   
    for item in kbxx :            
      jcdm2 = re.findall("?",item["jcdm2"])
      for each in range(len(jcdm2)) :
            jcdm2 = int(jcdm2)
      jcdm2.sort()      
      item["jcdm2"] = weekname)] + str(jcdm2) + "-" + str(jcdm2[-1]) + "节"   
    return kbxx


def SaveClassSchedule(kbxx): #保存课表中所需数据为excel文件。
    kb1 = makejcdm2(kbxx)
    kbxx = makezcs(kb1)
    wb = openpyxl.Workbook()
    ws = wb.active
    ws.append(["name","type","time","during","teacher","place"])
    for item in kbxx :
      ws.append(,"必修",item["jcdm2"],item["zcs"],item["teaxms"],item["jxcdmcs"]])
    wb.save("kbxx.xlsx")



def main():
    data={}
    data['account'] = input("账号:")
    data['pwd'] = input("密码:")
    Session = get_vrifycode_session()
    data['verifycode'] = input("验证码:")
    loginurl = "http://jxfw.gdut.edu.cn/new/login"
    r = Session.post(loginurl,data = data)
    kburl = "http://jxfw.gdut.edu.cn/xsgrkbcx!xsAllKbList.action?xnxqdm=201702"
   
    r = Session.get(kburl)
    strkb = re.findall(r"kbxx.+}\]",r.text)
    kbxx = eval(strkb.split("="))
    SaveClassSchedule(kbxx)

if __name__ == "__main__" :
    main()
    input("导出成功,回车键退出")

活在当下2 发表于 2018-4-3 05:35:26

salanghe 发表于 2018-4-3 08:50:38

想看看

迎山风 发表于 2018-4-3 09:04:15

zanglanju 发表于 2018-4-3 09:09:13

{:5_92:}

请求回答 发表于 2018-4-3 10:25:55

学习学习

taoflysky 发表于 2018-4-3 11:13:44

不错

skytan 发表于 2018-4-3 11:29:17

过来学习啦!

fengkezhu 发表于 2018-4-3 13:00:51

不回复不让看

qepwq 发表于 2018-4-3 13:28:40

想看看

很正经的 发表于 2018-4-3 14:29:41

{:10_249:}

youwillwin 发表于 2018-4-3 14:50:11

感谢分享

python土豆 发表于 2018-4-3 16:47:29

{:10_256:}

鼹鼠house 发表于 2018-4-3 19:05:04

感谢分享

无名小白xyz 发表于 2018-4-3 21:23:19

66

随枫而来 发表于 2018-4-3 21:50:12

我过来学习下

黎嘎嘎 发表于 2018-4-3 21:53:41

想看

EzioAudit0re 发表于 2018-4-3 22:42:04

看一哈

a756330564 发表于 2018-4-4 07:03:47

赞呐

lan358088 发表于 2018-4-4 09:08:36

谢谢 分享。。。。。。。。。。。。。。
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: python登陆教务系统爬取以及生成个人excel课表