12-南信大研究生院的登录-打印成绩单

目的:登入南京信息工程大学研究生院的官网,输入学号 密码,打印用户的成绩单

结果呈现:打印用户名成绩单,存入在csv文件中

南京信息工程大学研究生院登入官网的首页:http://202.195.235.61/pyxx/login.aspx

注:最近到学期末了,是不是各种考试扑面而来?!!!嘻嘻嘻,身为研二老学姐的我,没有考试哇,开森~~~然后我就无聊想查一下我研一的成绩,激励下自己,看看我那会的成绩,毕竟那会还是很努力的,算是从另一方面刺激下现在懒惰的自己吧!

#下面为本实例的爬虫代码,若有问题可以给我留言,或者有更好的解决方法也可以私信我~

import requests
from bs4 import BeautifulSoup
import csv
import os

class NXD():
    def __init__(self,number,passwd):
        self.number=number
        self.passwd=passwd

    def login(self):
        session=requests.Session()
        headers={'user-agent':'Mozilla/5.0'}
        session.headers.update(headers)
        cookie_url='http://202.195.235.61/pyxx/login.aspx'
        r=session.get(cookie_url)  #让session具有cookie信息
        html=r.text
        soup=BeautifulSoup(html,'html.parser')
        __VIEWSTATE=soup.find('input',{'name':{'__VIEWSTATE'}})['value']  #得到__VIEWSTATE
        data={
            '__VIEWSTATE':__VIEWSTATE,
            '_ctl0:txtusername':self.number,
            '_ctl0:ImageButton1.x':'0',
            '_ctl0:ImageButton1.y':'0',
            '_ctl0:txtpassword':self.passwd
        }
        login_url='http://202.195.235.61/pyxx/login.aspx'
        r=session.post(login_url,data=data)
        soup=BeautifulSoup(r.text,'html.parser')
        judge=soup.find('form',{'method':{'post'}})['action']  #正确登入时,judge=Default.aspx 错误登陆时,judge=login.aspx
        if judge=='Default.aspx':
            leftmenu_url='http://202.195.235.61/pyxx/leftmenu.aspx'
            r=session.get(leftmenu_url)
            soup=BeautifulSoup(r.text,'html.parser')
            name_tr=soup.find('tr',{'height':'20'})
            welcome=name_tr('td')[0].text.strip()
            print('登陆成功! '+welcome)
            student_name=welcome.split(':')[-1]  #学生姓名
            table_student=soup.find_all('tr',{'height':{'23'}})[2]('table')[1]  #个人信息
            td_student=table_student.find_all('td',{'height':'20'})[1]
            href=td_student('a')[0]['href']
            grade_url=href.replace('1.aspx','8.aspx')  #成绩
            r=session.get(grade_url)
            soup=BeautifulSoup(r.text,'html.parser')
            all_tr=soup.find_all('tr',{'nowrap':{'nowrap'}})  #所有课程
            class_name=[]   #课程
            class_credit=[]  #课程学分
            class_term=[]   #选修学期
            grade=[]       #成绩
            for tr in all_tr:
                if len(tr('td')[0].text.strip())!=2:
                    class_name.append(tr('td')[0].text.strip())  #课程
                    class_credit.append(tr('td')[1].text.strip()) #课程学分
                    class_term.append(tr('td')[2].text.strip())  #选修学期
                    grade.append(tr('td')[3].text.strip())       #成绩
            info=list(zip(class_name,class_credit,class_term,grade))#将成绩组合起来
            self.save(info,student_name)
            print('{}--->成绩单打印成功!'.format(student_name))
        else:
            print('用户或密码名输入错误!请重新登陆')
            main()

    def save(self,info,name):
        file=name+'.csv'
        with open(file,'a+',encoding='utf-8',newline='')as csv_file:
            csv_write=csv.writer(csv_file)
            if os.path.getsize(file)==0:
                csv_write.writerow(['课程','课程学分','选修学期','成绩'])
            for item in info:
                csv_write.writerow(list(item))
        csv_file.close()

def main():
    number=input('请输入学号:').strip()
    passwd=input('请输入密码:').strip()
    student=NXD(number,passwd)
    student.login()

main()

(1)屏幕显示:

6e087c187a0aa310892552613baa3d5fbf9.jpg【输入用户的学号和密码】

(2)文件夹显示:

41df8562b2d8941e04d5de865252dcd85c4.jpg

a6791268f20b1b78b0dd0435e3dda3af82b.jpg

#注:成绩不能说明一切,虽然我的成绩不是特别的好,但是最起码那会的我很努力啊!所以警戒自己!!!现在也要努力,要脚踏实地的做事!

今日爬虫完成~~~

今日鸡汤:太阳每一天都是新的,而我们活着的每一天都是真的,要不断的提升自己,改变生活。

加油ヾ(◍°∇°◍)ノ゙

转载于:https://my.oschina.net/pansy0425/blog/2994529

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值