Python爬取兰州大学教务在线数据

发布时间:2018-11-21浏览量:28
作为一个知乎小透明,我几乎从来没有过在各路大神面前班门弄斧过。去年末的时候成功当上了微软校园精英,外加现在Python刚刚入门,就来随便写点东西吧。

我所在的兰州大学无论是查考试成绩、课程表,还是评估课程什么的都只能通过浏览器访问兰州大学教务处这个网页,再输入账号、密码、验证码登录,没有免验证码的登陆方法,也没有手机客户端。于是我就想着能不能用Python做到自动化。另外,用的是清华大学教育研究所开发的教务系统,而不是正方的。

在网上看了很多其他学校的同学的作品,也进行了一些参考,下面直接贴代码。

其实到最后我也没成功,现在的问题就是没办法登陆进去。不过大的框架应该还是没问题的吧,如果有高人看到麻烦指点一下,如果是我这边的问题我还能改一下,如果是教务系统的问题那我也无能为力了。

#coding=utf-8\nimport urllib\nimport http.cookiejar\nimport os\nimport re\nimport sys\nfrom io import BytesIO\nfrom PIL import Image\nfrom selenium import webdriver\nfrom selenium.webdriver.common.keys import Keys\n\ncookie = http.cookiejar.CookieJar()  \nopener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))\nopener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))\nopener.addheaders.append(('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'))  \nopener.addheaders.append(('Connection','Keep-Alive'))\nopener.addheaders.append(('Accept','text/html, */*; q=0.01'))\nopener.addheaders.append(('Accept-Encoding','gzip, deflate'))\nopener.addheaders.append(('Accept-Language','zh,zh-CN;q=0.8,en;q=0.6'))\nopener.addheaders.append(('Content-Length','0'))\nopener.addheaders.append(('Cookie','JSESSIONID=A48FB5EEAF6E9371A4A3632397E0C240.TA1'))\nopener.addheaders.append(('DNT','1'))\nopener.addheaders.append(('Host','jwk.lzu.edu.cn'))\nopener.addheaders.append(('Origin','http://jwk.lzu.edu.cn'))\nopener.addheaders.append(('Referer','http://jwk.lzu.edu.cn/academic/calendarinfo/viewCalendarInfo.do'))\nopener.addheaders.append(('X-Requested-With','XMLHttpRequest'))\n\nopener.open(urllib.request.Request('http://jwk.lzu.edu.cn/academic/common/security/login.jsp'))  \n  \nimgurl = 'http://jwk.lzu.edu.cn/academic/getCaptcha.do'  \nuserid = \"****\"  \npwd = \"****\"  \nres = opener.open(urllib.request.Request(imgurl))  \ntempIm = BytesIO(res.read())  \nim = Image.open(tempIm)  \nim.show()  \nyzm = input(\"yzm:\")\nnumber=\"%B5%C7%C2%BC\"\npostdata = urllib.parse.urlencode({  \n    'groupId':'',  \n    'j_username':userid,  \n    'j_password':pwd,  \n    'j_captcha':yzm,\n    'button1':number,  \n    }).encode(encoding='UTF8')  \nreq = urllib.request.Request(\n    url = 'http://jwk.lzu.edu.cn/academic/j_acegi_security_check',\n    data = postdata\n    )  \nopener.open(req) \n\n#content = urllib.request.urlopen('http://jwk.lzu.edu.cn/academic/manager/score/studentOwnScore.do?groupId=&moduleId=2020').read()\n#print(content.decode('UTF-8'))\n\ndriver = webdriver.PhantomJS(executable_path=\"C:UsersquzchAppDataLocalProgramsPythonPython35Scriptsphantomjs.exe\") \nurl=\"http://jwk.lzu.edu.cn/academic/manager/score/studentOwnScore.do?groupId=&moduleId=2020\"\ndriver.get(url)\ndata = driver.page_source\nprint(data)\n

文章:Python爬取兰州大学教务在线数据 http://www.xajzzs.com/jwzx/188.html 转移请注明了出处