常熟理工学院内网打卡查询代码

打卡查询

代码

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数据,获取自己想要的数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值