本文主要是介绍Python爬虫:爬取北京师范大学珠海分校课程表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
本篇文章只是记录一下python课的小作业而已没啥技术含量。(顺便练练Markdown语法?)
需要的库:
- requests:请求网站
- bs4:用于解析HTML文件
- PIL:图像处理标准库,看验证码
- lxml:依旧是一个很好用的解析库
- io
实现过程:
模拟登陆:
准备工作
- 打开教务网站,再打开开发者工具,有一个network选项,登陆后能看你的登录操作提交了哪些东西,我们就是要来模拟这个。
登陆之后:一般正方的教务系统都是这个文件
- __VIEWSTATE和__EVENTVALIDATION每一次打开登录界面都不同,在模拟登陆之前,我们还得要提前提取这两个信息。
‘TextBox1’: 学号
‘TextBox2’:密码
‘TextBox3’:验证码
session可以保持连接并多次请求
index就是教务网站的 html
session=requests.session()#能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies。
url="http://es.bnuz.edu.cn/"
login_page=session.get(url,headers=headers)
我们先构造这个字典
datas={ 'TextBox1':'', 'TextBox2':'', 'TextBox3':'', 'RadioButtonList1':u"学生".encode('gb2312','replace'), 'Button4_test': '', '__VIEWSTATE':'', '__EVENTVALIDATION':'', '_VIEWSTATEGENERATOR':'', '__PREVIOUSPAGE':'' }
验证码:
只有学号和密码是不能登录的,我们还要拿到它的验证码。
验证码图片可以通过开发者工具里面找到其src:
http://es.bnuz.edu.cn/CheckCode.aspx
再利用图片标准库在python中打开这个图片
def get_check_code(checkcode,session,headers):img = session.get(checkcode, stream=True, headers=headers)check_code = int
这篇关于Python爬虫:爬取北京师范大学珠海分校课程表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!