• 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
  • 相关阅读:
    HEVC软件记录
    怪诞行为学
    docker学习实践之路[第一站]环境安装
    centos系统(ssh)登录缓慢(输入账户密码后需要等待若干时间)
    CentOS7.x编译安装nginx,实现HTTP2
    vs 2017 IIS EXPRESS 增加局域网访问
    nginx在centos 7中源码编译安装【添加grpc的支持】
    docker学习实践之路[第五站]mysql镜像应用
    docker学习实践之路[第四站]利用pm2镜像部署node应用
    docker学习实践之路[第三站]node站点部署
  • 原文地址:https://www.cnblogs.com/leonwen/p/5730874.html
Copyright © 2020-2023  润新知