执行信息网小工具_大幅度提升工作效率

本人开发了一个执行信息网的数据查询工具, 需求是我老婆公司提出来的,正好有闲暇时间就开发了,提升了她们公司工作效率90%

查询人必须依法使用查询信息,不得用于非法目的和不正当用途。非法使用本网站信息给他人造成损害的,由使用人自行承担相应责任

演示视频

https://githubs.xyz/boot?app=48

使用方法

详细用法见演示视频, 支持excel输入文件,必须只能有两列,第一列是姓名,第二列是身份证号码。

输出文件也是excel, 有3列, 第一列是姓名,第二列身份证,第三列是结果数据。

当能查到被执行数据时,第三列显示 时间和执行号,当查不到时,则显示否。

关于数据量

数据量本程序是没有明确的限制, 速度也可以参见演示视频,当数据量有上千乃至上万时, 可以提供下面思路优化。

程序是可以同时运行多个的, 我们可以将数据拆解成几个excel, 然后启动几个程序同时跑数据,则可以提高很大查询效率。

部分源码

代码是python写的,下面贴出部分代码

def reset():
    global running
    running = False
    ui_start.config(state=tk.NORMAL)
    global web
    print("reset " + str(web))
    if web:
        web.close()
        web = None


def write_output(output_data, log):
    if not output_data:
        return
    for file in output_data:
        for path in file.keys():
            if path.endswith(".xlsx") or path.endswith(".xls"):
                wb = Workbook()
                ws = wb.active
                ws.append([title_name, title_card, '结果'])
                for line in file[path]:
                    ws.append([line['name'], line['card'], line['ret']])
                wb.save(path)
                log("输出文件 : " + path)
            if path.endswith(".csv"):
                with open(path, 'w', encoding='UTF8') as f:
                    writer = csv.writer(f)
                    writer.writerow([title_name, title_card, '结果'])
                    for line in file[path]:
                        writer.writerow([line['name'], line['card'], line['ret']])
                log("输出文件完成 : " + path)


# output_data = start0(console, "E:/桌面/中转站/qiqi", conf)
# write_output(output_data)


def console(content):
    DATE_TIME = time.strftime('[%Y-%m-%d %H:%M:%S]')
    ui_console.insert('end', f'{DATE_TIME}  {content}\n')  # 向text文本框末尾追加文字
    ui_console.see(tk.END)  # 光标一直追加到文件末尾
    ui_console.update()  # 一直更新输出


def open_dir():
    fileDir = askdirectory()  # 选择目录,返回目录名
    ui_in_dir.delete(0, tk.END)
    ui_in_dir.insert(0, fileDir)


def start():
    conf = {
        "home_index": Home_URL,  ## 首页url
        "dom_code": "id.captchaImg",  # 验证码元素 , 支持: id. css. xpath. 格式
        "dom_code_input": "css.#yzm",  # 验证码输入框
        "dom_name": '''xpath.//*[@id="pName"]''',  # 姓名 输入框
        "dom_card": "css.#pCardNum",  # 身份证 输入框
        "dom_query": "css.div.col-lg-2:nth-child(7) > button:nth-child(1)",  # 查询按钮
        "dom_code_err": "xpath./html/body/div[2]/div/div/div[1]/form[1]/div[4]/div[4]",  # 错误验证码提示
        "dom_code_ok": "xpath./html/body/div[2]/div/div/div[1]/form[1]/div[4]/div[5]",  # 正确验证码提示
        "dom_result": "xpath./html/body/div[2]/div/div/div[2]/div[1]/div/table/tbody/p",  # 查询结果元素
        "unfind_keyword": "范围内没有找到",  # 没有找到结果的关键词
        "dom_result_ok_table": "id.result-table"  # 查询到结果的表格元素
    }
    ## 开始线程
    ui_start.config(state=tk.DISABLED)
    Thread(target=start0, args=(console, ui_in_dir.get(), conf)).start()


def force_close():
    global running
    running = False
    if not web:
        return
    reset()


window = tkinter.Tk()
window.title("中国执行信息网查询-开发者QQ:657455400")
screenWidth = window.winfo_screenwidth()  # 获取显示区域的宽度
screenHeight = window.winfo_screenheight()  # 获取显示区域的高度
left = (screenWidth - 500) / 2
top = (screenHeight - 500) / 2
window.geometry("%dx%d+%d+%d" % (500, 500, left, top))

##################ui
padding = 10
h = 30
tk.Label(window, text='数据源目录:').place(x=padding, y=padding, w=100, h=h)
ui_in_dir = tk.Entry(window)
ui_in_dir.place(x=padding * 2 + 100, y=padding, w=200, h=h)
ui_select_dir = tk.Button(window, text='选择目录', command=open_dir)
ui_select_dir.place(x=padding * 3 + 100 + 200, y=padding, w=80, h=h)

ui_start = tk.Button(window, text='打开浏览器', command=start)
ui_start.place(x=padding, y=padding * 2 + h, w=160, h=h)

tk.Button(window, text='强制停止', command=force_close).place(x=padding*2 + 160, y=padding * 2 + h, w=160, h=h)

ui_console = scrolledtext.ScrolledText(window, width=500, height=300, bg='#000', font=('宋体', 8),
                                       foreground='#fff')
ui_console.place(x=padding, y=padding * 3 + h * 2, w=490, h=400)

###################
def close():
    reset()
    window.destroy()


window.protocol('WM_DELETE_WINDOW', close)
window.mainloop()

结尾语

查询人必须依法使用查询信息,不得用于非法目的和不正当用途。非法使用本网站信息给他人造成损害的,由使用人自行承担相应责任。

相关推荐
耶啵奶膘25 分钟前
uniapp-是否删除
linux·前端·uni-app
魔道不误砍柴功1 小时前
Java 中如何巧妙应用 Function 让方法复用性更强
java·开发语言·python
NiNg_1_2341 小时前
SpringBoot整合SpringSecurity实现密码加密解密、登录认证退出功能
java·spring boot·后端
闲晨1 小时前
C++ 继承:代码传承的魔法棒,开启奇幻编程之旅
java·c语言·开发语言·c++·经验分享
2401_850410831 小时前
文件系统和日志管理
linux·运维·服务器
王哈哈^_^2 小时前
【数据集】【YOLO】【目标检测】交通事故识别数据集 8939 张,YOLO道路事故目标检测实战训练教程!
前端·人工智能·深度学习·yolo·目标检测·计算机视觉·pyqt
cs_dn_Jie2 小时前
钉钉 H5 微应用 手机端调试
前端·javascript·vue.js·vue·钉钉
测开小菜鸟2 小时前
使用python向钉钉群聊发送消息
java·python·钉钉
开心工作室_kaic3 小时前
ssm068海鲜自助餐厅系统+vue(论文+源码)_kaic
前端·javascript·vue.js
一只哒布刘3 小时前
NFS服务器
运维·服务器