直接上代码(可参考以前爬ecust的备注)
from tkinter import *
from time import ctime
import requests as rq
from pyquery import PyQuery as pq
def gpa (i) :
if i=="优" :
return 3.7
if i=='合格' :
return 1.0
i=float(i)
if i>=90 and i<=100 :
return 4.0
elif i<=89 and i>=85 :
return 3.7
elif i<=84 and i>=82 :
return 3.3
elif i<=81 and i>=78 :
return 3.0
elif i<=77 and i>=75 :
return 2.7
elif i<=74 and i>=71 :
return 2.3
elif i<=70 and i>=66 :
return 2.0
elif i<=65 and i>62 :
return 1.7
elif i<=61 and i>=60 :
return 1.3
elif i<=59 and i>=0 :
return 0
def cal (L) :
sum1=0
sum2=0
for eachline in L:
if '选修' not in eachline[2 ] or '体育' in eachline[0 ]:
sum1=sum1+float(eachline[1 ])
sum2=sum2+float(eachline[1 ])*gpa(eachline[3 ])
return sum2/sum1
def main (username='' ,password='' ) :
urls=["http://jwxt.imu.edu.cn/loginAction.do" ,"http://jwxt.imu.edu.cn/gradeLnAllAction.do?type=ln&oper=fainfo&fajhh=33416" ,username,password]
H={"Accept" :"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8" ,
"Accept-Encoding" :"gzip, deflate" ,
"Accept-Language" :"zh-CN,zh;q=0.8,en-US;q=0.6,en;q=0.4" ,
"Cache-Control" :"max-age=0" ,
"Connection" :"keep-alive" ,
"Content-Length" :"30" ,
"Content-Type" :"application/x-www-form-urlencoded" ,
"Host" :"jwxt.imu.edu.cn" ,
"Origin" :"http://jwxt.imu.edu.cn" ,
"Referer" :"http://jwxt.imu.edu.cn/loginAction.do" ,
"Upgrade-Insecure-Requests" :"1" ,
"User-Agent" :"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36" }
L0=[]
L1=[]
s=rq.session()
data0={'zjh' :urls[2 ],'mm' :urls[3 ]}
s.post(urls[0 ],data=data0,headers=H)
pages=s.get(urls[1 ]).text
doc=pq(pages)
j=doc('table' ).filter('#user' ).find('td' )
for i in j:
L0.append(pq(i).text())
Lj=len(L0)
for i in range(0 ,int(Lj/8 )):
L1.append([L0[8 *i+2 ],L0[8 *i+4 ],L0[8 *i+5 ],L0[8 *i+6 ]])
return L1
def insert2 () :
T1.delete(0.0 ,END)
T1.insert(1.0 ,"%s请耐心等待...." %ctime())
username=E1.get()
password=E2.get()
L1=main(username,password)
pages='\n'
for eachline in L1:
for items in eachline:
pages=pages+items+' '
pages+='\n您的全部成绩如下:\n'
gpa=cal(L1)
T1.delete(0.0 ,END)
T1.insert(1.0 ,"您的必修课绩点是%s" %gpa)
T1.insert(2.0 ,pages)
root=Tk()
root.geometry("1000x700" )
root.title("内蒙古大学JWC成绩爬取" )
L1=Label(root,text="用户名" )
L2=Label(root,text="密码" )
L3=Label(root,text="作者:华理小司机@华东理工大学" );L3.place(relx=0.8 ,rely=0.1 );
B1=Button(root,text="确定" ,command=insert2)
E1=Entry(root)
E2=Entry(root,show='*' )
T1=Text(root,width=800 ,height=1000 )
L1.pack();E1.pack();L2.pack();E2.pack();B1.pack();T1.pack()
root.mainloop()