目的:登入南京信息工程大学研究生院的官网,输入学号 密码,打印用户的成绩单
结果呈现:打印用户名成绩单,存入在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)屏幕显示:
【输入用户的学号和密码】
(2)文件夹显示:
#注:成绩不能说明一切,虽然我的成绩不是特别的好,但是最起码那会的我很努力啊!所以警戒自己!!!现在也要努力,要脚踏实地的做事!
今日爬虫完成~~~
今日鸡汤:太阳每一天都是新的,而我们活着的每一天都是真的,要不断的提升自己,改变生活。
加油ヾ(◍°∇°◍)ノ゙