type
Post
status
Published
date
Jun 29, 2024
slug
summary
tags
category
系统实验
icon
password
AE 每天有一项固定工作:填表。
RFI、DWSS、数字系统。本该待在现场的时间,被压着坐在电脑前,把 Excel 里一行行数据手动贴到网页表单里。批量提交时,既慢,又容易漏。
我写了个 Python 脚本解决这事。读取 Excel,自动填网页表单,一键提交。今天开源出来,希望能帮到同样被填表折腾的同行。
notion image

原理

三步,每一步都是常规操作:
  1. pandas 读 Excel 数据
  1. lxml 解析 HTML 页面,抓出表单字段 ID
  1. requests 携带 Cookie 模拟 POST 提交
没必要套 Selenium 写浏览器自动化,那样反而慢。
 

第一步:获取源码

欢迎访问我的 GitHub 仓库下载完整代码: 🔗 Autofill-in-DWSS (点击跳转)
觉得有用,顺手点个 Star。

第二步:准备你的“弹药” (数据文件)

代码包中有两个关键文件需要你准备: • 3_test.xlsx:这是你的数据源。把你今天要提交的所有 RFI 信息按列填入这个 Excel 表格中即可。 • id.html:这是网页的“地图”。你需要获取目标填报页面的源码。 操作方法:用 Chrome 浏览器打开你的 RFI 填报网页 $\rightarrow$ 右键点击空白处选择“查看网页源代码” (或快捷键 Ctrl+U / Cmd+U) $\rightarrow$ 保存页面 (Ctrl+S) $\rightarrow$ 命名为 id.html,放在脚本同一目录下。
(注:仓库内已附带了一个做好的 Demo,可直接参考。)

第三步:配置 Python 运行环境

如果你还没配置过 Python 环境,推荐使用 VSCode 作为你的主阵地:
  1. 安装 Python 和 VSCode,并在 VSCode 中安装 Python 扩展。
  1. 在 VSCode 终端中创建一个虚拟环境以隔离依赖:Bash
    1. python -m venv myenv
  1. 激活虚拟环境 (Windows 使用 myenv\Scripts\activate,Mac/Linux 使用 source myenv/bin/activate)。
  1. 一键安装核心依赖包:Bash
    1. pip install lxml requests pandas openpyxl

第四步:修改“通行证” (Cookies)

这是最关键的一步,你需要让服务器知道“你是你”。
  1. 在浏览器登录你的 DWSS (或对应系统) 页面。
  1. F12 打开开发者工具,切换到 Application (应用) 面板。
  1. 在左侧找到 Cookies,找到 ASP.NET_SessionIdeirs 这两个关键字段的值。
  1. 打开 demo2.py,找到 Cookie 配置项,把抓取到的值替换进去。格式如下:Python
    1. 'Cookie': 'eirs=你的eirs值; ASP.NET_SessionId=你的SessionId值'

第五步:一键运行

在 VSCode 中右键点击 demo2.py,选择 "Run Python File in Terminal"。 喝口咖啡的功夫,终端就会跑出成功的 log,原本需要按小时计算的填表工作,几秒钟就全部搞定了。

本地部署

前提: 已安装 Python 和 VSCode。
  1. 拉代码
  1. 准备两个文件:
      • 3_test.xlsx:你要填的 RFI 数据
      • id.html:目标网页的 HTML 源码(Chrome 打开页面 → Ctrl+U → 保存)
  1. 激活虚拟环境:
  1. 改 Cookie:登录 DWSS 后,F12 → Application → Cookies,找到 ASP.NET_SessionIdeirs,替换进 demo2.py 的 Cookie 字段。
  1. 运行:
几秒跑完。原本按小时算的填表工作,变成喝口咖啡的功夫。

注意事项

  • Excel 数据格式必须和网页字段对齐
  • Cookies 会过期,定期更新
  • 遵守网站使用条款
  • 若网页结构变了,更新 id.html
notion image
#第一个文件3_test.xlsx文件是你提前准备要填写的内容
notion image
把需要填写的信息填入这个excel表格里。第一步完成
#第三个文件id.html文件是你要把网站中对应得id提取出来,做成一个HTML文件。目的是:通过lxml库解析本地HTML文件,获取关键的表单元素ID。
  • 打开浏览器(推荐使用 Chrome )。
  • 导航到包含 RFI表单的网页。
  • 右击页面空白处,选择"查看页面源代码"或按 Ctrl+U(Windows/Linux)或 Cmd+U(Mac)。
  • 在新打开的标签页中,你会看到网页的 HTML 源代码。
  • 按 Ctrl+S(Windows/Linux)或 Cmd+S(Mac)保存该页面。
  • 在保存对话框中:
    • 选择保存位置(建议与你的 Python 脚本在同一文件夹)
    • 将文件名改为 "id.html"
    • 确保保存类型为 "网页,仅 HTML"(或类似选项)
  • 点击"保存"。
其实我已经做一个完成得id.html文件,直接使用即可。上述是制作得原理和目的。
notion image
#第二个文件是demo2.py文件,
该文件利用了以下技术以及原理如下:
  1. Python 编程:整个脚本使用 Python 语言编写。
  1. 数据处理:
      • 使用 pandas 库读取和处理 Excel 文件数据。
      • 使用 lxml 库解析 HTML 文件,提取必要的元素 ID。
  1. Web 自动化:
      • 使用 requests 库模拟 HTTP POST 请求,自动提交表单数据。
  1. 日期和时间处理:使用 Python 的 datetime 模块(通过 pandas)处理日期和时间格式。
  1. 字符串操作:处理和格式化各种数据字段。
  1. 条件逻辑:使用 if-else 语句来处理不同的工作类别和子类别。
  1. 循环处理:使用 for 循环遍历 Excel 数据的每一行。
  1. 错误处理:虽然在给定的代码中没有明确的错误处理,但在实际使用中应该考虑添加异常处理机制。
  1. Web 协议:利用 HTTP 协议与服务器通信,包括设置请求头、cookies 等。
notion image
如何使用
配置代码运行环境,首先
  • 安装VSCode:
    • 从官方网站 (https://code.visualstudio.com/) 下载并安装VSCode。安装一个编译器,VScode或者PyCharm 编辑器等任一一款编译器
  • 安装Python扩展:
    • 打开VSCode
    • 点击左侧边栏的扩展图标(方块图标)
    • 搜索"Python"
    • 安装由Microsoft提供的Python扩展
    • 创建虚拟环境:
    • 打开VSCode的终端(Terminal > New Terminal)
    • 运行以下命令创建虚拟环境:
      • 复制
        python -m venv myenv
    • 激活虚拟环境:
      • Windows: myenv\Scripts\activate
      • macOS/Linux: source myenv/bin/activate
    • 安装所需的库:
      • 在激活的虚拟环境中,运行以下命令:
        pip install lxml requests pandas openpyxl
    • 打开Python文件:
      • 在VSCode中,打开包含您的Python脚本的文件夹
      • 打开 demo2.py 文件
    • 配置Python解释器:
      • Ctrl+Shift+P(Windows/Linux)或 Cmd+Shift+P(macOS)打开命令面板
      • 输入 "Python: Select Interpreter"
      • 选择您刚才创建的虚拟环境
    • 准备必要的文件:
      • 确保 test.xlsxid.html 文件与 demo2.py 在同一目录下。
        notion image
    • 修改cookies:
      • 在代码中找到 cookies 字典,用您自己的有效cookies替换现有的值。
        notion image
        在DWSS页面点击鼠标右键,选择“检测”,进入页面控制台,选择“application”找到Cookie的ASP.NET_SessionId和eirs对应的value,如上图上示,然后,修改demo2.py文件的'Cookie': 'eirs=!ahhg2Qjgd/VCmSwAz5JTUhgTkMNW57ytrhSVXwGaupbk/6tComrHpFyr4VBBFUFoXdd68rUNlPTIJtg=; ASP.NET_SessionId=yxg4ltfy2ilt1z2pvu2ovmzg',
        notion image
    • 运行脚本:
      • 右键点击编辑器中的任意位置
      • 选择 "Run Python File in Terminal"
    • 查看输出:
      • 脚本的输出将显示在VSCode的集成终端中。
        notion image
        程序正常执行任务。
        结果如下:
        notion image
notion image

为什么写这个

重复性数据搬运不该消耗人的精力。系统越复杂,操作应该越简单,而不是反过来。
把填表交回脚本,把时间还给现场。
 
第一次真正待在地盘:SSM518YL长洲:一个不用表现的下午
Loading...
© 2023 - 2026 Michael Zhang.Building Order in a World of Entropy