https://github.com/plutojia/Crawler-with-checkcode-recognition-
前段时间在选课,而我们的教务系统又十分蛋疼。先是在选课时不停崩溃,进不去,选课结束要打印选课单时又因为它自己系统太老而不支持64位浏览器打印课表。。。没有办法我就写了一个爬取教务课程信息并将其存储在MongoDB中的程序,这个程序稍微改改就可以变成抢课脚本了。内容有:
- 使用selenium驱动chrome浏览器
- 用pytesseract识别验证码
- MongoDB存储
首先选课系统长这个样子:
需要做的是通过脚本输入用户名和密码,并识别验证码登陆教务系统,跳转到选课页面,获取选课信息,最后将信息存储于MongoDB中。
打开开发者工具,定位登陆表单各元素:
依次获取元素填写相应字段,最后模拟点击登陆即可,代码如下:
def login():
browser.get('http://gsmis.graduate.buaa.edu.cn/gsmis/main.do')
browser.maximize_window()
input_id=browser.find_element_by_xpath('//input[@name="id"]')
input_password =browser.find_element_by_xpath('//input[@name="password"]')
input_checkcode=browser.find_element_by_xpath('//input[@name="checkcode"]')
img_checkcode=browser.find_element_by_xpath('//img[@src="/gsmis/Image.do"]')
location = img_checkcode.location
size = img_checkcode.size
browser.save_screenshot('checkcode.png')
checkcode=getCheckcode('checkcode.png',location,size)
input_id.send_keys(data['id'])
input_password.s