既然回到了书房,我就把所有的 SOP 彻底“代码化”

既然回到了书房,我就把所有的 SOP 彻底“代码化”。今天搞定了那个折磨我半个月的采集项目,不是靠以前的 DOM 树解析,是靠“看”。对,让代码去看图,然后点按钮。

这事说起来有点讽刺。2021年我还在教人用 Python + Selenium 做自动化,XPath 写得飞起,以为这就是技术的尽头。结果今年开春,客户扔过来一个单子,目标网站是那种丧心病狂的 React 单页应用,按钮 ID 每天变,class 名全是混淆过的哈希值,连元素层级结构都动态生成。我的老伙计 Selenium 彻底瞎了,定位不到任何东西。那几天我对着屏幕,感觉就像 2017 年第一次遇到微信小程序反爬时一样,那种熟悉的、被技术抛弃的恐慌又涌上来。妈的,我才 38 岁,不能就这么废了。

然后我看到了 GPT-4 的论文,里面提到了视觉理解。一个念头炸开了:既然人眼能看见按钮然后点下去,为什么程序不能?我需要的不是解析 DOM,而是复制“看见-识别-动作”这个生物流程。立刻动手,技术栈换成了 Playwright,因为它截图快,而且能直接和 Node.js 环境里的图像处理库联动。核心思路就三步:一,用 Playwright 把目标区域截下来;二,把截图传给一个本地的轻量级 CV 模型(一开始用的 OpenCV 模板匹配,太糙,后来换成了 PyTorch 跑一个简单的分类网络);三,模型返回按钮在截图里的坐标,再换算回页面坐标,用 Playwright 的 mouse.click 模拟点击。

最难的不是技术,是那种思维转换。你得像教一个三岁小孩认东西一样去教模型:这是“下一页”按钮,它可能蓝色也可能灰色,可能圆角也可能直角,但上面总有“>”这个符号或者“Next”这个单词。我花了三天时间,手动截了上千张各种状态的按钮图去做训练集。过程极其枯燥,就是不断截图、标注、训练、测试、失败、再调整。中间无数次想砸键盘,觉得有这功夫我手工都采集完了。但我知道不能停,这种“视觉自动化”一旦跑通,就是一道新的护城河,以后面对任何花里胡哨的前端框架都不怕了。

今晚是决战。脚本跑起来了,浏览器窗口在无人值守的情况下,一页一页地翻着,那个曾经根本无法定位的“加载更多”按钮,被精准地识别并点击。页面流畅地滚动,数据哗哗地落到本地 CSV 文件里。整个书房只有主机风扇的嗡鸣和屏幕上滚动的日志。那一刻没有狂喜,是一种冰冷的、接近麻木的确认。我又一次找到了后门,但这次的后门,开在“视觉”这个最底层的通道上。平台可以加密传输、混淆代码、频繁改版,但只要这个按钮还能被人类眼睛看见并理解,我的机器就能学会去点击它。

这感觉就像 2016 年我第一次用多线程绕过频率限制时一样,是一种纯粹的、技术层面的征服感。但这次更深刻。我知道,我过去赖以生存的“解析-爬取”手艺,正在被大模型和视觉技术降维打击。我不是在优化旧方法,我是在亲手埋葬它,同时给自己挖一条更深的战壕。窗外的天早就黑透了,我保存好所有的脚本和模型文件,给这个项目文件夹重命名,从“try_vison_crawl_final_final”改成了“vision_crawl_v1”。该睡了,明天还有新的 SOP 等着被“代码化”。

© 版权声明
THE END
喜欢就支持一下吧
点赞49 分享