• 工大助手(加权成绩计算)


    加权成绩计算

    组内讨论

    1. 图形界面tab键有误
    2. 图形界面改进
    3. 加权成绩计算有误

    改进

    根据学校官网给出的加权计算方法,重新调整了爬虫需要爬取的数据,例如将重修标记爬取到本地,之前认为辅修课程计入加权平均分的计算,所以并没有将标识重修的部分爬取下来,并保存在excel中,这样就可以在客户端同时展示成绩并且在计算加权的时候去掉这部分的成绩。

    修改之后的代码:

    	def login():
            try:
                    page = urllib2.urlopen(baseUrl).read()
                    soup = BeautifulSoup(page,"html.parser")
                    tmp = soup.find('input',attrs={'name':'__VIEWSTATE'})
                    viewstate = tmp['value']
                    studentNo = raw_input("studentNo:")
                    studentPass = raw_input("studentPass:")
                    secretCode = raw_input("secretCode:")
                    postData = urllib.urlencode({
                            '__VIEWSTATE': viewstate,
                            'txtUserName': studentNo,
                            'TextBox2': studentPass,
                            'txtSecretCode': secretCode,
                            'RadioButtonList1': '学生',
                            'Button1': '',
                            'lbLanguage': '',
                            'hidPdrs': '',
                            'hidsc': ''
                    })
                    request = urllib2.Request(baseUrl, postData, headers)
                    result = opener.open(request)
                    soup = BeautifulSoup(result.read(),"html.parser")
                    tmp = soup.find(id="xhxm")
    
                    studentName = str(tmp.string.decode('utf-8')[:-2])
                    graduURL1 = "http://gdjwgl.bjut.edu.cn/xscjcx.aspx?xh=" + studentNo + "&xm=" + studentName + "&gnmkdm=N121605"
                    referer = "http://gdjwgl.bjut.edu.cn/xs_main.aspx?xh=" + studentNo
                    graduURL1 = urllib.quote(graduURL1,"?&/=:")
    
                    headers_gra1 = {'Referer':referer,'user-Agent': user_agent,'Host':'gdjwgl.bjut.edu.cn',
                                        'Accept-Encoding': 'gzip, deflate','Connection': 'Keep-Alive'}
                    headers_gra2 = {'Referer': graduURL1,'user-Agent': user_agent}
                    
                    request_gra1 = urllib2.Request(graduURL1, headers=headers_gra1)
                    result = opener.open(request_gra1)
                    soup = BeautifulSoup(result.read(),"html.parser")
                    tmp = soup.find('input',attrs={'name':'__VIEWSTATE'})
                    viewstate = tmp['value']
                    postData_Gra = urllib.urlencode({
                            '__EVENTTARGET':'',
                            '__EVENTARGUMENT':'',
                            'btn_zcj':'历年成绩',
                            '__VIEWSTATE':viewstate,
                            'hidLanguage': '',
                            'ddLXN':'',
                            'ddLXQ':'',
                            'ddl_kcxz':''
                    })
                    request_gra2 = urllib2.Request(graduURL1, postData_Gra, headers_gra2)
                    result = opener.open(request_gra2)
                    return result.read()
            except urllib2.URLError, e:
                    if hasattr(e,"code"):
                            return e.code
    
    def writeIntoExcel():
            pageCode = login()
            # print pageCode
            
            soup = BeautifulSoup(pageCode, 'html.parser')
    
            table = soup.find("table", class_="datelist")
           
            book = xlwt.Workbook(encoding="utf-8", style_compression=0)
            sheet = book.add_sheet("score", cell_overwrite_ok=True)
    
            trs = table.find("tr")
            tds = trs.find_all("td")
            #print tds
            col = 0
            
            for i in range(len(tds)):
                if i == 0 or i == 1 or i == 3:
                    sheet.write(0, col, tds[i].find('a').string.decode("utf-8"))
                    col += 1
                if i == 4 or i == 6 or i == 7 or i == 8 or i == 9:
                    sheet.write(0, col, tds[i].string.decode("utf-8"))
                    col += 1
    
            row = 0
            trs = table.find_all("tr")
            for i in range(len(trs)):
                if i > 0:
                    tds = trs[i].find_all("td")
                    row += 1
                    col = 0
                    for j in range(len(tds)):
                        if j == 0 or j == 1 or j == 3 or j == 4 or j == 6 or j == 7 or j == 8 or j == 9:
                            sheet.write(row, col, tds[j].string.decode("utf-8"))
                            col += 1
    
            book.save("score.xls")
            print "EXCEL done!"
    
  • 相关阅读:
    解决小程序sessionid不一致
    小程序实现写入缓存与读取缓存
    小程序登录时如何获取input框中的内容
    js实现截取字符串后几位
    js用正则判断身份证号码
    sublime Text3安装及配置与解决安装插件失败
    jQuery实现全选与全部选
    jQuery实现enter键登录
    常用正则表达式的判断与写法
    js实现正则判断手机号
  • 原文地址:https://www.cnblogs.com/syncCN/p/5628577.html
Copyright © 2020-2023  润新知