手机版

python实现登陆教务系统查询成绩

发布时间:2024-11-02   来源:未知    
字号:

python实现登陆教务系统查询成绩

python实现登陆教务系统查询成绩

02083100

陈颖

python实现登陆教务系统查询成绩

目录

背景介绍……………………………………………………………………………………3 1.实验准备.............................................................................................................................3 2.实现过程…………………………………………………………………………………3 3.问题讨论…………………………………………………………………………………6 4.结论……………………………………………………………………………………….7 参考文献……………………………………………………………………………………8

python实现登陆教务系统查询成绩

背景介绍

Python是一种面向对象、直译式计算机程序设计语言,创始人为Guido van Rossum。这种语言的语法简捷而清晰,并且具有丰富和强大的类库。python常被昵称为胶水语言,它能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型(有时甚至是程序的最终界面),然后

对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。

第一章 实验准备

为了模拟登陆教务处系统,需要弄清登录时向网页提交的表单内容。通过用wireshark抓包,可分析出提交内容的格式。如图所示:

第二章 实验过程

Python代码如下: # -*- coding: cp936 -*- import urllib2 import httplib import cookielib import urllib

from BeautifulSoup import BeautifulSoup import re import hashlib

class LoginJWC:

def __init__(self):

python实现登陆教务系统查询成绩

self.cookie = cookielib.CookieJar()

self.httpcookie = urllib2.HTTPCookieProcessor(self.cookie) self.opener = urllib2.build_opener(self.httpcookie) urllib2.install_opener(self.opener)

def getpage(self): global url0,url1,url2

stream = urllib2.urlopen(url0) buffers=stream.read()

r=http://pile('sharedValue = -?\d+').findall(buffers) p=http://pile('-?\d+').findall(r[0]) self.sharevalue=p[0]

def login(self,uid,password): global url0,url1,url2

temp=str(hashlib.md5(password).hexdigest())

password=str(hashlib.md5(temp+self.sharevalue).hexdigest())

enparams="uid="+uid+"&password="+password+"&sltType="+str("%D1%A7++%C9%FA")+"&Submit="+str("%C8%B7+%B6%A8")+"&command="+str("studentLogin") headers

=

{'Content-Type':'application/x-www-form-urlencoded','Connection':'Keep-Alive'}

request = urllib2.Request(url = url1,headers = headers,data=enparams) stream=urllib2.urlopen(request) self.result=stream.read()

def getscore(self): global url0,url1,url2

stream = urllib2.urlopen(url2) self.scores=stream.read() print self.scores

python实现登陆教务系统查询成绩

def auto(self):

self.uid='02083078' self.password='8189613' self.getpage()

self.login(self.uid,self.password) self.getscore()

if __name__ == "__main__": uid = '02083100' password = '19621007' choosing = True while choosing:

choice = str(raw_input('choose your net(jiaoyu or dianxin) : ')) if choice == "jiaoyu":

url0='http://219.245.123.226/xdjwWeb/index2005.jsp' url1='http://219.245.123.226/xdjwWeb/Servlet/UsersControl'

url2='http://219.245.123.226/xdjwWeb/studentStatus/queryScore/query_person_score.jsp'

choosing = False elif choice == "dianxin":

url0='http://125.76.215.232/xdjwWeb/index2005.jsp' url1='http://125.76.215.232/xdjwWeb/Servlet/UsersControl'

url2='http://125.76.215.232/xdjwWeb/studentStatus/queryScore/query_person_score.jsp'

choosing = False else:

print 'your net can be only jiaoyu or dianxin' bb = LoginJWC() bb.getpage()

bb.login(uid,password) bb.getscore()

python实现登陆教务系统查询成绩

运行结果截图如下:

第三章 问题讨论

估计入门时都会遇到的。我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正常的。百思不得其解。首先查看了一下源文件的编码格式,是UTF-8。经过搜索再搜索,调试再调试,也换了几个编译器,发现比IDLE还糟糕(可能需要进行encode设置)。问题终于解决了,一共花了将近5个小时。

乱码原因:

因为我的文件声明为utf-8,并且也应该是用utf-8的编码保存的源文件。但是windows的本地默认编码是cp936,也就是gbk编码,所以在控制台直接打印utf-8的字符串当然是乱码了。

解决方法:

python实现登陆教务系统查询成绩

在控制台打印的地方用一个转码就ok了,打印的时候这么写: print myname.decode('UTF-8').encode('GBK')

比较通用的方法应该是: import sys

type = sys.getfilesystemencoding()

print myname.decode('UTF-8').encode(type)

第四章 结论

Beautifulsoup是用Python写的一个HTML/XML的解析器,它可以很好的处理不规范标记并生成剖析树(parse tree)。它提供简单又常用的导航(navigating),搜索以及修改剖析树的操作。它可以大大节省你的编程时间。但我这里并没有用到它,因为一用它就乱码。之前遇到过这种情况,但当时在文件开头加一句# -*- coding: cp936 -*-就能解决,可现在不知怎么了,中文乱码问题始终存在。无奈我只好忍痛割爱,放弃Beautifulsoup的功能和显示结果的美观。

python实现登陆教务系统查询成绩

参考文献

[1] Swaroop, C. H. 简明 Python 教程. 北京:清华大学出版社,2007-8-1. [2]John Goerzen. Python 网络编程基础. 北京:电子工业出版社,2005-2-7.

python实现登陆教务系统查询成绩.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)