直接上代码(可参考以前爬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()