基于 pywinauto 的自动化采集任务


这是一篇学习总结, 前段时间写了一个基于 Python 的自动获取网易有道单词例句的程序, 效果感觉还不错. 但是最终我也没有使用它, 主要原因有以下三点:
  1. 获取速度太慢, 我想要获取的单词比较多.
  2. 网易也会对这种行为进行封禁的, 采集会中断.
  3. 这些例句是有属于网易的.

实现技术

这个程序使用了一个 Python 的自动化库 ---- pywinauto, 因为官方已经很久没更新了, 所以 python 的版本最高只能是 Python 3.7 左右, 我用的是 Python 3.7.1. 我使用它模拟了输入单词, 复制例句, 获取例句, 清空剪切板, 然后重复这个操作, 总体上实现比较简陋. 而且, 为了简单, 我是之间手动切换到例句页, 这样就不用使用程序来切换到例句页了.

代码

requirements.txt

pyperclip==1.8.2
pywin32==304
pywinauto==0.6.8

代码

演示 如果想要启动这个代码, 还是蛮复杂的. 我这里直接把需要的步骤罗列一下, 希望能帮助感兴趣的同学.

  1. 修改dir_path, 并且在下面准备一个 input.txt 文件.
  2. 获取有道词典进程的 id.
  3. 获取单词输入框的坐标, 获取复制粘贴处的坐标.
  4. 将有道词典界面调整到例句处.

启动项目, 需要一个 input.txt 文件, 这里是我测试的文件.

sophisticated centralization phenomenon internationalization radioactive

我是通过任务管理器获取的进程 pid, 你也可以通过其它访问. 或者最简单的是使用 Inspect 和 Spy++, 我这里就偷懒了, 直接怎么省事怎么来了.

单词输入框的坐标, 复制粘贴处的坐标. 第一个坐标是为了定位输入框的, 然后程序会把单词复制进去, 并执行一下回车键, 然后内容被查询出来. 再将鼠标移动到第二个坐标处, 这里只是移动到下面的空白处就行了, 然后会执行一个全选 CTRL+A 操作. 这样一个单词的内容就全部获取到了.

将有道调整到这个位置, 首选查询一个单词, 选择例句, 然后保持这个界面不要动即可.

最后就是程序的执行了, 录制的 GIF 做了加速处理, 实际上执行的时候, 是特意加了延时的, 防止被过早的发现了.

控制台输出

output.json 文件

总结

经验分享 程序员 微信小程序 职场和发展