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

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

结尾语

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

相关推荐
敲代码的小王!2 小时前
MD5加密算法和BCrypt密码加密算法
java·算法·安全
Smile_Gently2 小时前
前端:最简单封装nmp插件(组件)过程。
前端·javascript·vue.js·elementui·vue
罗政7 小时前
冒险岛079 V8 整合版源码搭建教程+IDEA启动
java·ide·intellij-idea
架构默片7 小时前
【JAVA工程师从0开始学AI】,第五步:Python类的“七十二变“——当Java的铠甲遇见Python的液态金属
java·开发语言·python
不只会拍照的程序猿8 小时前
从插入排序到希尔排序
java·开发语言·数据结构·算法·排序算法
陈译8 小时前
Grafana——如何迁移Grafana到一台新服务器
运维·服务器·grafana
wangjun51598 小时前
linux redis ipv6、ipv4 只接收本地访问、接收本地和远程访问
linux·运维·服务器
x66ccff8 小时前
【nvidia】NCCL禁用P2P后果权衡
服务器·网络协议·p2p
luckycoke8 小时前
小程序立体轮播
前端·css·小程序
一 乐8 小时前
高校体育场管理系统系统|体育场管理系统小程序设计与实现(源码+数据库+文档)
前端·javascript·数据库·spring boot·高校体育馆系统