常熟理工学院内网打卡查询代码
程序员文章站
2022-05-04 11:49:50
...
打卡查询
代码
import requests
import http.cookiejar
import urllib
from bs4 import BeautifulSoup
import os
def search(username):
url = "http://10.28.102.51/student/checkUser.jsp?userName=%s&passwd=%s" % (username, username)
req=urllib.request.Request(url)
cj=http.cookiejar.CookieJar()
opener=urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cj))
r=opener.open(req)
get_url="http://10.28.102.51/student/queryExerInfo.jsp"
get_request=urllib.request.Request(get_url)
get_response=opener.open(get_request)
data=get_response.read()
soup=BeautifulSoup(data,"html.parser")
table=soup.find_all("table",attrs={"class":False,"border":"0","cellpadding":"0","cellspacing":"0","width":"100%"})[1]
tr=table.find_all("tr")[2]
kind=tr.find_all("td")[1]
tds=kind.find_all("td")
datas={}
datas["早操"]=tds[2].getText().split(" ")[0].split("\xa0")[1]
datas["体育俱乐部考勤"]=tds[4].getText().split(" ")[0].split("\xa0")[1]
datas["引体向上考勤"]=tds[6].getText().split(" ")[0].split("\xa0")[1]
datas["篮球比赛"]=tds[8].getText().split(" ")[0].split("\xa0")[1]
datas["田径"]=tds[10].getText().split(" ")[0].split("\xa0")[1]
datas["运动会单项"]=tds[12].getText().split(" ")[0].split("\xa0")[1]
datas["竞赛管理"]=tds[14].getText().split(" ")[0].split("\xa0")[1]
datas["考勤4"]=tds[16].getText().split(" ")[0].split("\xa0")[1]
datas["考勤5"]=tds[18].getText().split(" ")[0].split("\xa0")[1]
datas["增加次数"]=tds[20].getText().split(" ")[0].split("\xa0")[1]
datas["共打卡"]=0;
for value in datas.values():
datas["共打卡"]+=int(value)
datas["共打卡"]/=2
datas["共打卡"]=int(datas["共打卡"])
return datas
if __name__=="__main__":
print("请输入学号:")
username=input()
print("正在查询……")
datas=search(username)
for key in datas.keys():
print(key+":"+str(datas[key])+"次")
print("查询结束")
input()
程序思路
分析网页
[1.打卡查询登录页面]
[2.登录后跳转的页面]
[3.实际打卡信息页面]
页面1是登录页面,登录成功后跳转到页面2,然后点击查看体锻信息跳转到页面3。我们想获取打卡数据首先得通过登录页面到达实际打卡信息页面。所以我们就得获得登录后的cookie,用来唯一标识用户身份。再利用该cookie直接请求第三个页面。
实际操作:
- 发送request登录请求
- 获取response返回cookie
- 创建新的request请求赋予得到的cookie
- 分析再次返回的response数据,获取自己想要的数据
下一篇: dubbo admin的使用
推荐阅读