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

结尾语

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


精品源码屋
3 声望6 粉丝

提供海量精品源码,业务范围:游戏,网站,工具等。 也支持招商代理