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
    评论
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向大学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,提高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程中,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言中的函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程中至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会提供给学生大量的机会来将所学的概念应用到具体的场景中,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来提高自己的编程能力、代码质量和团队协作能力。教师也将会给学生提供详细的反馈,帮助他们改善自己的问题和提高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会大幅提高自己的编程能力、透彻理解C语言并将其应用到实际工作中。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程中,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程中还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际中应用学到的技术,发现其中存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值