zoukankan      html  css  js  c++  java
  • Python爬取信息管理系统计算学分绩点

    试手登录了下我们学校的研究生信息管理系统,自动计算学分绩点

     1 # -*- coding:utf-8 -*-
     2 import urllib
     3 import urllib2
     4 import re
     5 import cookielib
     6 from bs4 import BeautifulSoup
     7 
     8 class OUC:
     9     def __init__(self,username,password):
    10         self.loginUrl = "http://graduate.ouc.edu.cn/j_acegi_security_check"
    11         # self.leftFrameUrl = "http://graduate.ouc.edu.cn/listLeft.do?"
    12         self.frameGradeUrl = "http://graduate.ouc.edu.cn/accessModule.do?moduleId=25011&groupId="
    13         # self.gradeUrl = "http://graduate.ouc.edu.cn/listMyBulletin.do?"
    14         self.cookies = cookielib.CookieJar()
    15         self.postdata = urllib.urlencode({
    16             'j_username':username,
    17             'j_password':password,
    18             'groupId':''
    19         })
    20         self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
    21 
    22     def getPage(self):
    23         user_agent = 'Mozilla/4.0(compatible;MSIE 5.5;Windows NT)'
    24         headers = {'User-Agent':user_agent}
    25         request = urllib2.Request(
    26             url=self.loginUrl,
    27             data=self.postdata,
    28             headers=headers
    29         )
    30         result = self.opener.open(request)
    31         gradeResult = self.opener.open(self.frameGradeUrl)
    32         btfsp = BeautifulSoup(gradeResult.read())
    33         # print  btfsp.prettify()
    34 
    35         content = btfsp.body.find_all("tr")
    36         resultTable = [[0 for col in range(3)] for row in range(14)]
    37         print u'专业名称'.rjust(15),'	',u'成绩','	',u'学分'
    38         i = 0
    39         for item in content[1:]:
    40             itemList = item.find_all("td")
    41             classname = itemList[1].text.split(' ')[0].strip()
    42             score = itemList[6].text.split('
    ')[7].strip()
    43             weight = itemList[7].text
    44             resultTable[i][0] = classname
    45             resultTable[i][1] = float(score)
    46             resultTable[i][2] = float(weight)
    47             print classname.rjust(15),'	',score.rjust(3),'	',weight.rjust(3)
    48             i += 1
    49             # print '%10s' % classname,'%-3s' % score.split('
    ')[7],'	',weight
    50         # 计算GPA
    51         sumGPA = 0
    52         sumWeight = 0
    53         for k in range(14):
    54             sumWeight += resultTable[k][2]
    55             sumGPA += resultTable[k][1] * resultTable[k][2]
    56             gpa = sumGPA / sumWeight
    57 
    58         print u'
    学分绩点为:',gpa
    59 
    60 if __name__ == '__main__':
    61     # ouc_stu = OUC()
    62     print '================ Welcome ===================='
    63     print u'Please enter your login messages:'
    64     username = input('username:')
    65     password = input('password:')
    66     print u'Waiting...'
    67     ouc_stu = OUC(username,password)
    68     ouc_stu.getPage()

    原文地址:http://www.cnblogs.com/leonwen/p/5730874.html

    I can
  • 相关阅读:
    大型网游全景图制作方法
    KRPano中文教程文档PDF版本下载
    KRPANO资源分析工具下载VR-FACTORY全景图
    KRPANO资源分析工具下载网展全景图
    KRPANO资源分析工具下载720THINK全景图
    遗留代码单元测试与重构的一点小体会
    Openflow Plugin学习笔记2
    Openflow Plugin学习笔记1
    直接并不简单
    DIDM源码分析
  • 原文地址:https://www.cnblogs.com/leonwen/p/5730874.html
Copyright © 2011-2022 走看看