Skip to content

Python自动化体系

至此,你已经集齐了 Python 自动化的四把钥匙:

  1. Pandas大脑,负责思考和处理数据。
  2. Playwright触手,负责从互联网抓取养分。
  3. Pathlib管家,负责打理本地的文件资产。
  4. PyAutoGUI替身,负责处理那些顽固的旧世界软件。

从今天起,当你再遇到任何需要重复三次以上的操作时,请下意识地停下来想一想:“我的 Python 实习生,能不能替我干这件事?”

哪怕代码写得再烂,只要它能跑,它就在为你创造时间。 祝你的自动化之旅愉快!

浏览器自动化 (Web Automation) 这相当于给你的实习生配了一双“看”互联网的眼睛和一双“点”鼠标的手。它的战场在 Chrome 浏览器里。不管是帮你监控抢手的演唱会门票、定时抓取竞争对手的价格数据,还是向那些没有 API 接口的老旧后台系统录入信息,Selenium 和 Playwright 这类工具能让浏览器完全听命于你。

系统/文件自动化 (System/File Automation) 这是操作系统的“后勤管家”。当你的下载文件夹乱成一锅粥,或者有几千个文件需要按照“日期+客户名”的格式重命名时,不需要人工介入。利用 Python 最基础的 ospathlib 库,你可以监控文件夹的变化,自动归档文件,让你的电脑井井有条。

键鼠自动化 (GUI Automation) 这是最后的“暴力美学”。当一个软件既没有数据接口,也不能通过浏览器访问(比如某些银行的客户端或全屏游戏),我们就只能动用物理外挂。PyAutoGUI 这类库不识别代码,它只识别屏幕上的图像和坐标。它模拟真实的物理鼠标移动和键盘敲击,虽然笨重,但它是解决“不可能自动化”问题的最后底牌。

这四种自动化并非 Python 独占,甚至在某些领域,Python 并不是“原生”的首选。

我之所以把它们归纳在“Python 自动化”这个大旗下,是因为对于独立开发者(尤其是像你这样想做全栈、想快速出结果的人)来说,Python 是唯一能把这四块**“无缝串联”**起来的胶水。

让我们把你觉得“刻意”的地方拆开,一个个摊开来说亮话:

1. 浏览器自动化:为什么不用 JS/Node.js?

你是对的: Playwright 和 Puppeteer 确实是 Node.js 生态的原住民。毕竟浏览器跑的就是 JS,用 JS 控制 JS 是最自然的。前端工程师做自动化测试(E2E Testing)时,首选绝对是 Node.js。

但为什么推荐你用 Python 版?

  • 你的目的不同: 前端用它是为了测试页面功能;你是为了抓取数据
  • 数据流断层: 如果你用 Node.js 抓到了数据,你想把它变成 Excel,或者进行复杂的清洗(比如去重、计算),JS 处理数据(尤其是大型数组)的能力远不如 Python 的 Pandas 方便。
  • Python 的优势: 抓取(Playwright) -> 清洗(Pandas) -> 存库(SQL/Excel),都在同一个 .py 文件里,甚至变量都不用换。
    • 如果你用 JS: 你得用 Node 抓完存成 JSON,再写个 Python 脚本读取 JSON 处理……这就割裂了。

2. 系统/文件自动化:杀鸡焉用牛刀?

你是对的: 如果只是简单的“把 jpg 移动到图片文件夹”,写个 Python 脚本确实有点大炮打蚊子。

  • Linux/Mac 用户: 写个 Shell (mv *.jpg ./images) 只需要 1 秒。
  • Windows 用户: 写个 PowerShell 或者 Bat 批处理也很快。

那为什么还需要 Python? 因为逻辑复杂度一上来,Shell/Bat 就崩了。

  • 场景: “请把文件名里包含‘2024’且文件大小大于 5MB 的 PDF 移动,并且移动前要把文件名里的‘草稿’两个字删掉,如果重名了就自动在后面加个序号。”
  • 对比:
    • Shell/Bat: 写这种逻辑,光是处理字符串和循环判断就能让你头秃。
    • Python (pathlib): 依然是像写作文一样清晰,还能顺便调用一下正则表达式库。

3. 键鼠自动化:按键精灵不是更好?

你是对的: 如果是为了挂游戏,专门的“按键精灵”或者“AutoHotKey (AHK)” 确实更轻量、更底层、响应更快。

Python (PyAutoGUI) 的优势在哪里? 在于**“认知能力”**。

  • AHK 擅长死板的点击。
  • Python 可以结合 OpenCV(计算机视觉)PaddleOCR(文字识别)
  • 场景: 你不仅要点击按钮,你还要识别屏幕上弹出的那个“验证码”是什么字。这时候,AHK 傻眼了,但 Python 可以调个库瞬间识别出来,然后填进去。

总结:不是“刻意”,而是“最大公约数”

这四种自动化,如果你单独把它们拆开:

  • Web: JS 可能是老大。
  • Data: Python 是神。
  • System: Shell 是闪电。
  • GUI: C++/AHK 是原教旨。

但是,Python 是每一项的“第二名”

作为独立开发者,你不想学 4 门语言来解决 4 个问题。你选了 Python,意味着你牺牲了一点点特定领域的极致性能(或原生性),换来了**“一把梭”**的统御能力。

这就是为什么“Python 自动化”是一个体系,而不是四个割裂的技巧。

基于 VitePress 搭建 | 记录生活与代码