zoukankan      html  css  js  c++  java
  • python爬取并计算成绩

    模拟登录后抓取成绩,计算绩点。

    # -*- coding: utf-8 -*-  
     
    import urllib
    import urllib2
    import cookielib
    import re
    import string
     
    #绩点运算
    class SDU:
     
       #类的初始化
       def __init__(self):
          #登录URL
          self.loginUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bks_login2.login'
          #成绩URL
          self.gradeUrl = 'http://jwxt.sdu.edu.cn:7890/pls/wwwbks/bkscjcx.curscopre'
          #CookieJar对象
          self.cookies = cookielib.CookieJar()
          #表单数据
          self.postdata = urllib.urlencode({
                'stuid':'201200131012',
                'pwd':'xxxxx'
             })
          #构建opener
          self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookies))
          #学分list
          self.credit = []
          #成绩list
          self.grades = []
     
       def getPage(self):
          req  = urllib2.Request(
                url = self.loginUrl,
                data = self.postdata)
          result = self.opener.open(req)
          result = self.opener.open(self.gradeUrl)
          #返回本学期成绩页面
          return result.read().decode('gbk')
     
       def getGrades(self):
          #获得本学期成绩页面
          page = self.getPage()
          #正则匹配
          myItems = re.findall('<TR>.*?<p.*?<p.*?<p.*?<p.*?<p.*?>(.*?)</p>.*?<p.*?<p.*?>(.*?)</p>.*?</TR>',page,re.S) 
          for item in myItems:
             self.credit.append(item[0].encode('gbk'))
             self.grades.append(item[1].encode('gbk'))
          self.getGrade()
     
       def getGrade(self):
          #计算总绩点
          sum = 0.0
          weight = 0.0
          for i in range(len(self.credit)):
             if(self.grades[i].isdigit()):
                sum += string.atof(self.credit[i])*string.atof(self.grades[i])
                weight += string.atof(self.credit[i])
     
          print u"本学期绩点为:",sum/weight
     
    sdu = SDU()
    sdu.getGrades()
    每天一小步,人生一大步!Good luck~
  • 相关阅读:
    一张图看懂开源许可协议,开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别
    常用Flex 布局scss
    设置npm registry的几种方法
    JavaScript计算平方数的三种方法
    NPM 使用介绍
    x 的 y次幂科学计数法
    Docker 容器使用
    使用dos的tree命令输出文件夹树
    赣州(虔州)历史文化
    vue通过$ref获取不到元素样式?
  • 原文地址:https://www.cnblogs.com/jkmiao/p/5034394.html
Copyright © 2011-2022 走看看