鱼C论坛

 找回密码
 立即注册
查看: 15758|回复: 514

[作品展示] python登陆教务系统爬取以及生成个人excel课表

  [复制链接]
发表于 2018-4-2 23:35:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

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

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

  4. @author: coyota
  5. """
  6. try :
  7.     import requests
  8.     from PIL import Image
  9.     import time
  10.     import re
  11.     import openpyxl
  12. except Exception as reason:
  13.     print("存在未成功安装的库,请确认安装后重新运行\n")
  14.     print("keyword:",reason)


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


  27. def makezcs(kbxx):   #整理课表中上课周次为指定格式
  28.     for item in kbxx :
  29.         zcs = list(eval(item["zcs"]))
  30.         zcs.sort()
  31.         flag = 1
  32.         during = []
  33.         content = []
  34.         for i in range(1,len(zcs)) :
  35.             if zcs[i] == zcs[i-1] + 1 :
  36.                 flag += 1
  37.             else :        
  38.                 during.append(flag)
  39.                 flag = 1
  40.         during.append(flag)
  41.         flag = 0
  42.         for i in during :
  43.             if i == 1:
  44.                 content.append(str(zcs[flag])+"周")
  45.             else :
  46.                 content.append(str(zcs[flag])+"-"+str(zcs[flag+i-1])+"周")
  47.             flag += i
  48.         for i in content :
  49.             if i == content[0] :
  50.                 str1 = str(i)
  51.             else :
  52.                 str1 = str1 + "&" + str(i)
  53.         item["zcs"] = str1
  54.     return kbxx


  55. def makejcdm2(kbxx): #整理课表中上课星期、节次为指定格式
  56.     weekname = ["","周一 ","周二 ","周三 ","周四 ","周五 ","周六 ","周日 "]
  57.    
  58.     for item in kbxx :            
  59.         jcdm2 = re.findall("[1-9][0-2]?",item["jcdm2"])
  60.         for each in range(len(jcdm2)) :
  61.             jcdm2[each] = int(jcdm2[each])
  62.         jcdm2.sort()        
  63.         item["jcdm2"] = weekname[int(item["xq"])] + str(jcdm2[0]) + "-" + str(jcdm2[-1]) + "节"   
  64.     return kbxx


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



  74. def main():
  75.     data={}
  76.     data['account'] = input("账号:")
  77.     data['pwd'] = input("密码:")
  78.     Session = get_vrifycode_session()
  79.     data['verifycode'] = input("验证码:")
  80.     loginurl = "http://jxfw.gdut.edu.cn/new/login"
  81.     r = Session.post(loginurl,data = data)
  82.     kburl = "http://jxfw.gdut.edu.cn/xsgrkbcx!xsAllKbList.action?xnxqdm=201702"
  83.    
  84.     r = Session.get(kburl)
  85.     strkb = re.findall(r"kbxx.+}\]",r.text)
  86.     kbxx = eval(strkb[0].split("=")[1])
  87.     SaveClassSchedule(kbxx)

  88. if __name__ == "__main__" :
  89.     main()
  90.     input("导出成功,回车键退出")
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 05:35:26 From FishC Mobile | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 08:50:38 | 显示全部楼层
想看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 09:04:15 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 09:09:13 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 10:25:55 | 显示全部楼层
学习学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 11:13:44 | 显示全部楼层
不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 11:29:17 | 显示全部楼层
过来学习啦!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 13:00:51 | 显示全部楼层
不回复不让看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 13:28:40 | 显示全部楼层
想看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 14:29:41 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 14:50:11 | 显示全部楼层
感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 16:47:29 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 19:05:04 | 显示全部楼层
感谢分享
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 21:23:19 | 显示全部楼层
66
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 21:50:12 | 显示全部楼层
我过来学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-3 21:53:41 | 显示全部楼层
想看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-3 22:42:04 | 显示全部楼层
看一哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-4-4 07:03:47 | 显示全部楼层
赞呐
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-4-4 09:08:36 | 显示全部楼层
谢谢 分享。。。。。。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 06:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表