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

本人开发了一个执行信息网的数据查询工具, 需求是我老婆公司提出来的,正好有闲暇时间就开发了,提升了她们公司工作效率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()

结尾语

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

相关推荐
一 乐1 小时前
学籍管理平台|在线学籍管理平台系统|基于Springboot+VUE的在线学籍管理平台系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习
昨天;明天。今天。1 小时前
案例-表白墙简单实现
前端·javascript·css
数云界1 小时前
如何在 DAX 中计算多个周期的移动平均线
java·服务器·前端
风清扬_jd1 小时前
Chromium 如何定义一个chrome.settingsPrivate接口给前端调用c++
前端·c++·chrome
安冬的码畜日常1 小时前
【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次
开发语言·前端·javascript·函数式编程·tdd·fp·jasmine
阑梦清川1 小时前
Java继承、final/protected说明、super/this辨析
java·开发语言
ChinaDragonDreamer1 小时前
Vite:为什么选 Vite
前端
小御姐@stella1 小时前
Vue 之组件插槽Slot用法(组件间通信一种方式)
前端·javascript·vue.js
GISer_Jing1 小时前
【React】增量传输与渲染
前端·javascript·面试
eHackyd1 小时前
前端知识汇总(持续更新)
前端