first commit
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
#!/usr/bin/env python3
|
||||
# -*- coding: utf-8 -*-
|
||||
"""快速判定“无导出入口”报表页的真实结构:等待15s后统计 #icon-download / 文字下载按钮 / 是否需先查询。"""
|
||||
import json, urllib.request, time
|
||||
D = "http://127.0.0.1:10086/command"; S = "2haohr"
|
||||
def call(a, args, t=90):
|
||||
b = json.dumps({"action": a, "args": args, "session": S}).encode()
|
||||
r = urllib.request.Request(D, data=b, headers={"Content-Type": "application/json"})
|
||||
return json.loads(urllib.request.urlopen(r, timeout=t).read().decode())
|
||||
def ev(c):
|
||||
try: return call("evaluate", {"code": c}).get("data", {}).get("value")
|
||||
except Exception as e: return "EXC:" + str(e)[:80]
|
||||
|
||||
STAT = r"""(()=>{
|
||||
let icon=0;document.querySelectorAll('use').forEach(u=>{const h=u.getAttribute('xlink:href')||u.getAttribute('href');if(h==='#icon-download')icon++;});
|
||||
const btns=[...document.querySelectorAll('button,a,[role=button]')].map(b=>(b.innerText||'').trim()).filter(t=>t&&t.length<12&&/下载|导出|生成|查询|搜索|excel/i.test(t));
|
||||
const bcnt={};btns.forEach(t=>bcnt[t]=(bcnt[t]||0)+1);
|
||||
// 是否存在数据表格
|
||||
const tbl=document.querySelectorAll('table,[class*=table],[class*=Table]').length;
|
||||
const empty=/暂无数据|请选择|请先|no data/i.test(document.body.innerText||'');
|
||||
return JSON.stringify({icon_download:icon,dl_btns:bcnt,tables:tbl,has_empty_hint:empty});})()"""
|
||||
|
||||
def probe(url, label):
|
||||
call("navigate", {"url": url, "newTab": False})
|
||||
time.sleep(15)
|
||||
print("[%s] %s" % (label, url))
|
||||
print(" ", ev(STAT))
|
||||
|
||||
def main():
|
||||
call("find_tab", {"url": "2haohr.com"})
|
||||
for url, label in [
|
||||
("https://2haohr.com/attendance/stat/monthly", "月考勤表"),
|
||||
("https://2haohr.com/attendance/stat/report", "考勤报表"),
|
||||
("https://2haohr.com/social-insurance/reports", "社保报表"),
|
||||
("https://2haohr.com/org/org-forms", "组织报表"),
|
||||
("https://2haohr.com/payroll/salary/report", "薪酬报表"),
|
||||
]:
|
||||
probe(url, label)
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user