改进于http://blog.csdn.net/sbw6788778/article/details/50799603

一、使用requests模块,通过POST提交表单的形式登陆
1、登陆南邮智慧校园,使用谷歌浏览器等工具进行抓包,查看提交给服务器的请求地址和表单信息


其中username password 为账号密码, lt 为动态变化的参数,这个参数是从登陆的页面获得的,在页面中的源码中如下


execution参数是执行的次数,每次访问这个页面时,e后面的计数会加一,不过设置成固定的值好像是没有影响的,其他两个参数是固定的。
登陆后,要保持登陆状态,使用requests.Session()的方法保持登陆的cookie

2、下载课表
点击打开或保存为EXCEL文件,发现保持下来的是.jsp的文件

发现浏览器向这个url发出了post

提交的表单是

知道表单的信息后,就可以自己构造表单来提交,并保存下来
完整代码如下

# coding:utf-8
import requests
import re#登陆地址
url_login = 'http://ids6.njupt.edu.cn/authserver/login? service=http://my.njupt.edu.cn/login.do'#登陆表单提交的地址
login_post = 'http://ids6.njupt.edu.cn/authserver/login?service=http%3A%2F%2Fyjs.njupt.edu.cn%2Fepstar%2Fweb%2Fswms%2Fmainframe%2Fhome.jsp'# 保持登陆状态的cookie
z = requests.Session()
z.headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}#----------------------构造登陆表单----------
s = z.get(url_login)
html = s.text
pattern_lt = r'name="lt" value="(.*?)"'
lt = re.findall(pattern_lt, html)  # 使用正则表达式匹配
print lt
login_data = {'username': '学号','password': '密码','lt':lt,'dllt':'userNamePasswordLogin','execution':'e1s1','_eventId':'submit','rmShown':'1'
}#-------------提交登陆表单--------------------
s1 = z.post(url=login_post, data=login_data)# ----------------检测是否登陆成功--------------
# 登陆成功后显示的网址是http://my.njupt.edu.cn/index.do
s2 = z.get(url_login)
print s2.url  #---------------------请求课表信息,并保存-----------------
# 请求课表post的地址
course_post = 'http://yjs.njupt.edu.cn/epstar/yjs/T_PYGL_KWGL_WSXK/T_PYGL_KWGL_WSXK_XSKB_NEW.jsp?&current.model.id=aa5u2-5qit61-ga0dny4n-1-gb0irwbr-ffc'
#表单数据
request_data = {'excel':'true','XQDM':'31','XH':'学号'
}# 保存返回的数据
req = z.post(url=course_post, data=request_data, stream=True)
with open('test3.jsp', 'w') as f:f.write(req.content)

python 爬虫 教务系统模拟登陆 并下载课表相关推荐

  1. 使用python爬虫模拟12306登陆

    使用python爬虫模拟12306登陆   需要用到requests库函数,下载requests库函数地方法:直接在命令行输入以下代码就可以了就可以了. pip install requests 模拟 ...

  2. Python爬虫之Scrapy库的下载和安装

    Python爬虫之Scrapy库的下载和安装 下载scrapy库 1.点击https://www.lfd.uci.edu/~gohlke/pythonlibs,进入该网页后Ctrl+F输入scrapy ...

  3. Python爬虫:AGE动漫下载之 requests 版

    日常跳转: 导入: 分析与代码解释: 打印搜索到的信息 BeautifelSoup4 库使用提醒 小优化 链接解析: 获取视频链接 小优化: 提示: 视频下载: 求大佬赐教 实例源码及结果 结果及下载 ...

  4. Python爬虫之网易云音乐下载

    Python爬虫之网易云音乐下载 目标 用Python根据网易云音乐的ID,下载音乐,保存到本地MP3格式 可以下载歌曲的范围:所有能够听的歌曲 配置基础 Python 3.5 模块 pycrypto ...

  5. 爬虫python下载-如何用Python爬虫实现百度图片自动下载?

    制作爬虫的步骤 制作一个爬虫一般分以下几个步骤: 分析需求 分析网页源代码,配合开发者工具 编写正则表达式或者XPath表达式 正式编写 python 爬虫代码 效果预览 运行效果如下: 存放图片的文 ...

  6. 写文章没高质量配图?python爬虫绕过限制一键搜索下载图虫创意图片!

    文章目录 前言 分析 理想状态 实际分析 爬虫实现 其他注意 效果与总结 前言 在我们写文章(博客.公众号.自媒体)的时候,常常觉得自己的文章有些老土,这很大程度是因为配图没有选好. 笔者也是遇到相同 ...

  7. python爬虫(一):模拟登陆微博

    最近花了不少时间来学python爬虫,觉得还是有很多问题的,比如说requests.get获得Pixiv的网页源代码,一直获取不到,不过我猜测大概是headers的问题,准备之后处理. 废话少说我们先 ...

  8. 正方教务系统模拟登陆查询课表出现302跳转解决Object moved to here.

    最近因为微信小程序[江理小助手]的课表,还没有开学,没有及时更新,就直接去url请求最新的课程, 经过抓包分析(其实就是F12浏览器netWork就可以找到请求了哪些字段) URL url=new U ...

  9. python下载网页里面所有的图片-Python 爬虫零基础教程(2):下载一组网页上的图片...

    效果图: 代码: # -*- coding: utf-8 -*- # Filename: download_pics.py # 下载一组图片 # 这组图片的 url 末位为 001 至 008 imp ...

最新文章

  1. unity5x --------Music Mixer参数详解
  2. Netty 源码走读
  3. 国科大高级人工智能-总结
  4. undertale人物_传说之下所有人物的照片
  5. CVPR 2019 | 国防科大提出双目超分辨算法,效果优异代码已开源
  6. 零基础学python语言_致初学者:零基础如何学好,Python这门编程语言?
  7. springboot的一些基层原理 2021-05-28
  8. 计算机一级笔试2012,2012计算机一级笔试模拟试卷及答案
  9. 剑指offer面试题52. 两个链表的第一个公共节点(双指针法)
  10. Hibernate常出现的报错
  11. 检查radio/checkbox是否至少选择一项
  12. HDU 1995 R-汉诺塔V
  13. 超硬核!小白读了这篇文章,就能在算法圈混了
  14. Android 自定义View加属性动画实现动画时钟
  15. 视频教程-2020华为HCIA/HCNA/数通/路由交换/实验/视频/教程/持续更新赠题库-华为认证
  16. 形式语言与自动机学习心得
  17. 计算机编程入门先学什么最好?
  18. svn 冲突 Error:Node remains in conflict
  19. linux下如何模拟按键输入和模拟鼠标
  20. java生日显示生肖星座_根据生日或者日期 获取 生肖和星座的 Java代码

热门文章

  1. opencv将图片生成视频
  2. 大海贼探险物语机器人_大海贼探险物语攻略全集:宠物职业解析体力装备副本都在这了...
  3. pod详解(一)什么是Pod?
  4. MLOps极致细节:0. 背景介绍
  5. 西门子1200下载报错
  6. 安装SQL Server2014 :规则”Windows Management Instrumentation (WMI)服务 “失败
  7. 一文了解 Web3 将如何改变投资领域
  8. 一些论文审稿方面的体会
  9. Unity打飞机(四)敌机移动与触碰效果,和爆炸音效
  10. 用pygame_menu的十行代码给你的pygame添加一个狂拽炫酷炸的游戏菜单