基于 pywinauto 的自动化采集任务
这是一篇学习总结, 前段时间写了一个基于 Python 的自动获取网易有道单词例句的程序, 效果感觉还不错. 但是最终我也没有使用它, 主要原因有以下三点:
- 获取速度太慢, 我想要获取的单词比较多.
- 网易也会对这种行为进行封禁的, 采集会中断.
- 这些例句是有属于网易的.
实现技术
这个程序使用了一个 Python 的自动化库 ---- pywinauto, 因为官方已经很久没更新了, 所以 python 的版本最高只能是 Python 3.7 左右, 我用的是 Python 3.7.1. 我使用它模拟了输入单词, 复制例句, 获取例句, 清空剪切板, 然后重复这个操作, 总体上实现比较简陋. 而且, 为了简单, 我是之间手动切换到例句页, 这样就不用使用程序来切换到例句页了.
代码
requirements.txt
pyperclip==1.8.2 pywin32==304 pywinauto==0.6.8
代码
演示 如果想要启动这个代码, 还是蛮复杂的. 我这里直接把需要的步骤罗列一下, 希望能帮助感兴趣的同学.
- 修改dir_path, 并且在下面准备一个 input.txt 文件.
- 获取有道词典进程的 id.
- 获取单词输入框的坐标, 获取复制粘贴处的坐标.
- 将有道词典界面调整到例句处.
启动项目, 需要一个 input.txt 文件, 这里是我测试的文件.
sophisticated centralization phenomenon internationalization radioactive
我是通过任务管理器获取的进程 pid, 你也可以通过其它访问. 或者最简单的是使用 Inspect 和 Spy++, 我这里就偷懒了, 直接怎么省事怎么来了.
单词输入框的坐标, 复制粘贴处的坐标. 第一个坐标是为了定位输入框的, 然后程序会把单词复制进去, 并执行一下回车键, 然后内容被查询出来. 再将鼠标移动到第二个坐标处, 这里只是移动到下面的空白处就行了, 然后会执行一个全选 CTRL+A 操作. 这样一个单词的内容就全部获取到了.
将有道调整到这个位置, 首选查询一个单词, 选择例句, 然后保持这个界面不要动即可.
最后就是程序的执行了, 录制的 GIF 做了加速处理, 实际上执行的时候, 是特意加了延时的, 防止被过早的发现了.
控制台输出
output.json 文件
