Python 自动化 打开网站 填表登陆 例子

devtools/2024/12/29 8:37:37/

图样

简价:

简要说明这个程序的功能:

1. **基本功能**:
   - 自动打开网站
   - 自动填写登录信息(号、公司名称、密码)
   - 显示半透明状态窗口实时提示操作进度

2. **操作流程**:
   - 打开网站后自动点击两个位置(1515,130)和(990,355)
   - 依次填写:税号 → 公司名称 → 密码
   - 最后自动按回车确认

3. **配置参数**:
```python
CONFIG = {
    'tax_id': 'xxxxxxx',    # 号
    'company_name': '登记名字',       # 公司名称
    'password': 'abc',              # 密码
    'wait_time': 1,                 # 每步操作等待时间
    'initial_delay': 3,             # 初始等待时间
    'url': 'https://xxxxxx/'  # 网站地址
}
```

只需要修改 CONFIG 中的参数就可以适应不同的登录信息。
 

代码: 

python"># -*- coding: utf-8 -*-
import pyautogui
import time
import pyperclip
import logging
import webbrowser
import tkinter as tk
from typing import Optional# 配置日志
logging.basicConfig(level=logging.INFO,format='%(asctime)s - %(levelname)s - %(message)s'
)# 配置参数
CONFIG = {'tax_id': 'xxxxxxx号','company_name': '登记名字','password': 'abc','wait_time': 1,'initial_delay': 3,'url': 'https://xxxxxxxx/'
}class StatusWindow:def __init__(self):self.root = tk.Tk()self.root.title("自动操作状态")# 设置窗口大小和位置self.root.geometry("300x100+100+100")# 设置窗口透明度self.root.attributes('-alpha', 0.8)# 设置窗口置顶self.root.attributes('-topmost', True)# 创建标签self.label = tk.Label(self.root,text="准备开始...",font=('微软雅黑', 12),wraplength=280)self.label.pack(pady=20)def update_status(self, message: str):"""更新状态信息"""self.label.config(text=message)self.root.update()def close(self):"""关闭窗口"""self.root.destroy()def open_tax_website() -> None:"""打开网站"""try:logging.info("正在打开网站...")webbrowser.open(CONFIG['url'])# 等待浏览器加载time.sleep(CONFIG['initial_delay'])# 移动到第一个位置并点击logging.info("移动到第一个位置...")pyautogui.moveTo(1515, 130)pyautogui.click()# 等待5秒time.sleep(5)# 移动到第二个位置并点击logging.info("移动到第二个位置...")pyautogui.moveTo(990, 355)pyautogui.click()# 等待1秒time.sleep(1)except Exception as e:logging.error(f"打开网站或移动鼠标时发生错误: {str(e)}")raisedef safe_paste(text: str, wait_time: Optional[float] = None) -> None:"""安全地执行复制粘贴操作"""wait_time = wait_time or CONFIG['wait_time']try:pyperclip.copy(text)time.sleep(wait_time)pyautogui.hotkey('ctrl', 'v')time.sleep(wait_time)except Exception as e:logging.error(f"粘贴文本 '{text}' 时发生错误: {str(e)}")raisedef safe_key_press(key: str, wait_time: Optional[float] = None) -> None:"""安全地执行按键操作"""wait_time = wait_time or CONFIG['wait_time']try:pyautogui.press(key)time.sleep(wait_time)except Exception as e:logging.error(f"按键 '{key}' 操作发生错误: {str(e)}")raisedef fill_tax_form() -> None:"""填写表单的主要函数"""status_window = StatusWindow()try:status_window.update_status("开始填写表单...")logging.info("开始填写表单...")# 首先打开网站status_window.update_status("正在打开税务网站...")open_tax_website()status_window.update_status("正在进行页面操作...")# 等待页面加载完成status_window.update_status("等待页面加载...")time.sleep(CONFIG['initial_delay'])# 输入税号status_window.update_status("正在输入税号...")logging.info("正在输入号...")safe_paste(CONFIG['tax_id'])safe_key_press('tab')# 输入公司名称status_window.update_status("正在输入公司名称...")logging.info("正在输入公司名称...")safe_paste(CONFIG['company_name'])safe_key_press('tab')# 输入密码status_window.update_status("正在输入密码...")logging.info("正在输入密码...")safe_paste(CONFIG['password'])safe_key_press('enter')  # 直接按回车确认status_window.update_status("表单填写完成!")logging.info("表单填写完成")time.sleep(2)  # 显示完成信息2秒except Exception as e:status_window.update_status(f"发生错误: {str(e)}")logging.error(f"填写表单时发生错误: {str(e)}")time.sleep(3)  # 显示错误信息3秒raisefinally:status_window.close()if __name__ == "__main__":try:fill_tax_form()print('表单填写已完成')except Exception as e:print(f'程序执行出错: {str(e)}')


http://www.ppmy.cn/devtools/146338.html

相关文章

小程序基础 —— 02 微信小程序账号注册

微信小程序账号注册 小程序开发与网页开发不一样,在开始微信小程序开发之前,需要访问微信公众平台,注册一个微信小程序账号。 有了小程序的账号以后,才可以开发和管理小程序,后续需要通过该账号进行开发信息的设置、…

Linux-Ubuntu之串口通信

Linux-Ubuntu之串口通信 一,串口通信1.串口通信寄存器配置2.串口通信软件实现①手动波特率②自动波特率③主函数 二,printf和scanf实现串口的输入显示 一,串口通信 1.串口通信寄存器配置 串口通信利用接口是这个TTL,下载程序用的…

EKF 自动匹配维度 MATLAB代码

该 M A T L A B MATLAB MATLAB代码实现了扩展卡尔曼滤波( E

flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath

flink cdc使用flink sql方式运行一直报Make sure a planner module is on the classpath 引入jar包信息: flink-connector-oracle-cdc:3.2.1 flink:1.20.0 flink-table-runtime:1.20.0 flink-streaming-java:1.20.0 flink-clients:1.20.0 Exception in thread &q…

MLLM学习过程

视频理解 SALOVA: Segment-Augmented Long Video Assistant for Targeted Retrieval and Routing in Long-Form Video Analysis 主要是用于增强对于长视频的理解。主要是讲视频进行剪切之后,首先判断每个剪切视频短对于文字的关联程度,并且将关联程度高…

探索寄存器读写函数:writeb, writew, writel 与 readb, readw, readl

本章目录 函数介绍读寄存器函数写寄存器函数 示例代码总结 在嵌入式系统开发中,与硬件直接交互是常见的需求。为了实现对硬件寄存器的读写操作,开发者通常会使用一些特定的函数。这些函数允许我们以字节、半字(2字节)或字&#xf…

WebClient HTTP 请求问题处理模板(泛型响应、忽略 SSL 证书等)

一、请求大数据 1、问题案例 (1)Server 该接口返回一段大小为 1MB 的字符串 GetMapping(“/testBigData”) public String testBigData() { int targetSize 1024 * 1024; // 1MB StringBuilder sb new StringBuilder(targetSize); for (int i 0; i …

美食推荐系统|Java|SSM|JSP|

【技术栈】 1⃣️:架构: B/S、MVC 2⃣️:系统环境:Windowsh/Mac 3⃣️:开发环境:IDEA、JDK1.8、Maven、Mysql5.7 4⃣️:技术栈:Java、Mysql、SSM、Mybatis-Plus、JSP、jquery,html 5⃣️数据库可…