QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

主题

帖子

荣誉

VIP至尊会员

Rank: 15Rank: 15Rank: 15

积分
137
查看: 825|回复: 3

小白尝试用python登陆学校教务系统碰到的一个问题

[复制链接]
最佳答案
0 
累计签到:123 天
连续签到:55 天
fishc-coy 发表于 2018-3-14 01:54:32 8253 | 显示全部楼层 |阅读模式
20鱼币
本帖最后由 fishc-coy 于 2018-3-18 16:58 编辑

教务系统用外网迟迟进不去,然后自己又想折腾,所以用selenium曲线救国了一波

思路大概是 用selenium webdriver 登陆教务系统获取登录后的cookie,然后在请求头加入cookie访问需要的网页

我的目的也就是导出课表到excel,然后用开源课表app生成ics文件,最后导入手机日历,如今只剩下excel一个小坑。

具体代码如下。

如果有兴趣的朋友可以帮我研究一下直接用requests库获取cookie的方法啊。必有酬谢啊。
等20号开完会了应该就可以了(上次也是这个原因)

http://222.200.98.147
http://222.200.98.146

这个悬赏就当送给小甲鱼了吧。

  1. #requests库请求的方法,未能成功。
  2. #注释掉的代码为两种post方式,不过都不对。
  3. #获取验证码部分是没有问题的
  4. import requests
  5. from PIL import Image
  6. import time
  7. import json

  8. #获取验证码
  9. Atimer = int((time.time())*1000)
  10. VerifyCode_url = 'http://222.200.98.147/yzm?d='+str(Atimer)
  11. head = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.4882.400 QQBrowser/9.7.13059.400'}
  12. r = requests.get(VerifyCode_url,headers = head)
  13. r= r.content
  14. with open("v.jpg","wb") as i:
  15.     i.write(r)
  16. img = Image.open("v.jpg")
  17. img.show()
  18. img.close()
  19. verifycode = input("请输入图片中的验证码:")

  20. #尝试登陆
  21. login_url ="http://222.200.98.147/new/login"
  22. #
  23. data = "accunt=311******1&pwd=kebi******07&verifycode="+str(verifycode)
  24. #
  25. #data={'account':'311******1','pwd':'ke******07','verifycode':'none'}
  26. #data["verifycode"] = verifycode
  27. #data = "account=%s" %  json.dumps(data)

  28. data2 = {'Accept': 'application/json, text/javascript, */*; q=0.01',
  29. 'Accept-Encoding': 'gzip, deflate',
  30. 'Accept-Language': 'zh-CN,zh;q=0.8',
  31. 'Connection': 'keep-alive',
  32. 'Content-Length': '51',
  33. 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
  34. 'Host':'222.200.98.147',
  35. 'Origin':'http://222.200.98.147',
  36. 'Referer':'http://222.200.98.147/',
  37. 'X-Requested-With':'XMLHttpRequest'}

  38. #r = requests.post(login_url,headers = data2,data = data)
  39. #
  40. r = requests.post(login_url,headers = data2,data = json.dumps(data))
  41. #
  42. rText = print(r.text)
复制代码

  1. #selenuim模拟登陆获取cookie,以达到目的,但略小题大做。。。
  2. # -*- coding: utf-8 -*-
  3. """
  4. Created on Fri Mar 16 14:46:21 2018

  5. @author: Administrator
  6. """
  7. from selenium import webdriver
  8. import time
  9. import requests
  10. import re
  11. #模拟浏览器登陆获取cookie
  12. driver = webdriver.Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
  13. driver.get('http://222.200.98.147')
  14. driver.find_element_by_id("account").send_keys("*******")
  15. driver.find_element_by_id("password").send_keys("*******")
  16. driver.find_element_by_id("j_captcha").click()
  17. verifycode = input("输入验证码:")
  18. driver.find_element_by_id("j_captcha").send_keys(verifycode)
  19. driver.find_element_by_xpath(r'//*[@id="submit_btn"]').click()
  20. cookie= driver.get_cookies()
  21. cookies = cookie[0]['name']+"="+cookie[0]['value']
  22. print(cookies)
  23. time.sleep(2)
  24. driver.quit()

  25. #用cookie登陆课表页面
  26. classform = "http://222.200.98.147/xsbjkbcx!xsAllKbList.action?xnxqdm=201702&bjdm=20160433402"
  27. head = {'Accept': 'application/json, text/javascript, */*; q=0.01',
  28. 'Accept-Encoding': 'gzip, deflate',
  29. 'Accept-Language': 'zh-CN,zh;q=0.9',
  30. 'Connection': 'keep-alive',
  31. 'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
  32. 'Host':'222.200.98.147','Cookie':'96F921FDE5BD0F6B1581A172A89EAC54',
  33. 'Origin':'http://222.200.98.147',
  34. 'Proxy-Connection':'keep-alive',
  35. 'Referer':'http://222.200.98.147/',
  36. 'X-Requested-With':'XMLHttpRequest'}
  37. head["Cookie"] = cookies
  38. r = requests.get(classform , headers = head)
  39. strkb = re.findall(r"kbxx.+}\]",r.text)
  40. kbxx = eval(strkb[0].split("=")[1])


  41. #分割课表
  42. print("{0:{6}^8}\t{1:{7}^6}\t{2:{8}^6}\t{3:{9}^6}\t{4:{10}^6}\t{5:{11}^6}".format("课程名称",
  43.       "节次","周次","星期","教学场地","教师",
  44.       chr(12288),chr(12288),chr(12288),chr(12288),chr(12288),chr(12288)))
  45. for content in kbxx :
  46.     if "," in content["zcs"] :
  47.         week = content["zcs"].split(",")
  48.         week = list(set(week))
  49.         content["zcs"] = week[0] + "-" + week[-1]
  50.     print("{0:{6}^10}\t{1:{7}^8}\t{2:{8}^8}\t{3:{9}^8}\t{4:{10}^8}\t{5:{11}^8}".format(content["kcmc"],
  51.           content["jcdm2"],content["zcs"],content["xq"],content['jxcdmcs'],content["teaxms"],
  52.           chr(12288),chr(12288),chr(12288),chr(12288),chr(12288),chr(12288)))
复制代码

楼层
跳转到指定楼层
最佳答案
4 

尚未签到

JAY饭 发表于 2018-3-14 08:06:56 | 显示全部楼层
你给的这个网址,我用网页都进不去
最佳答案
0 
累计签到:30 天
连续签到:1 天
Andy0214 发表于 2018-3-14 10:16:03 | 显示全部楼层
JAY饭 发表于 2018-3-14 08:06
你给的这个网址,我用网页都进不去

内网吧
最佳答案
2 
累计签到:12 天
连续签到:1 天
2289001949 发表于 2018-3-18 23:42:40 From FishC Mobile | 显示全部楼层
那是接上校园网才可以进的去的

发表回复

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

本版积分规则

关闭

小甲鱼强烈推荐 上一条 /1 下一条

    移动客户端下载(未启用)
    微信公众号

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备11014136号

Copyright 2018 鱼C论坛 版权所有 All Rights Reserved.

Powered by Discuz! X3.3 Copyright
© 2001-2018 Comsenz Inc.    All Rights Reserved.

小黑屋|手机版|Archiver|鱼C工作室 ( 粤公网安备 44051102000370号 | 粤ICP备11014136号

GMT+8, 2018-6-19 04:53

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