因为老婆有时要使用i志愿的系统导出活动的考勤情况,活动数量多的话,就要逐个点击打开复制粘贴,比较耗时间,小弟试过手动复制粘贴半年的活动都用了半天的时间,所以决定写个程序,可以根据活动编号,导出所有的考勤人员。
开发环境:python3+Flask
首先,登录i志愿,打开 活动查询 因为点击其他link 地址都没有变化,所以应该使用iframe,可以使用右键->审查元素 查看地址 明显src 的值就是地址,右键->open new tab,打开是这样: 将列表拉到最后,会看到操作栏目 此时点击 考勤 是无法弹出,因为不在iframe里面,所以JS 无法生效的,这个问题不大 对着 考勤 右键->审查元素,可以看出这段代码:
<a href="javascript:;" onclick="attend('XXXXX')">考勤</a>
XXXX 是活动编号,当点击 考勤 的时候会触发attend() 的方法
之后再查看页面源代码F12,搜索attend(,会查找到这个方法
/*考勤*/
function attend(tabid){
parent.f_addTab('mission_attend'+tabid, '志愿者考勤', path+'/mission/manage/listInspection?missionId='+tabid+'&selectType=0');
}
到这里,其实就可以拼接考勤的接口,tabid 是活动编号,拼接后的地址是: https://www.gdzyz.cn/mission/manage/listInspection?missionId=xxxxxx
根据活动编号,打开地址,右键->审查元素->Network,可以见到这个地址,这个地址就是
https://www.gdzyz.cn/api/mission/manage/getInspectionList.do?missionId=xxxxxx&type=&userName=&mobile=&idcardCode=&isAdditionalRecording=&inspection=&additionalRecordingDateInput=2021-09-25&pageIndex=1&pageSize=10
返回是一段json,打开这段Json,就会看到其实这是考勤人员的数据
有了这个接口,剩下的就好做了,我只需要提交 活动编号,还有登录后header 的cookie就可以了 界面如下
单次可以提交多个活动编号,就可以返回全部的考勤人员! 这是初版,以后有需要会继续改进!
|