既然 AI 能写出 100% 准确的代码,我就把“程序员”这层皮彻底剥了。今天凌晨三点,我盯着屏幕上那堆乱码,胃里一阵翻腾。不是困,是后怕。我亲手用 GPT-4 生成的“完美”爬虫脚本,跑了整整一夜,把客户要的十万条商品数据全毁了。不是没抓到,是抓错了,数据结构全乱了套,字段错位,价格跑到了描述栏里,SKU 和图片链接搅在一起。修复成本比重新抓一遍还高。客户明天下午就要数据,我现在连骂娘的力气都没了。
这脚本逻辑看起来无懈可击。我给的 Prompt 极其详细:目标网站、要抓的 CSS 选择器、JSON 输出格式、甚至考虑了分页和简单的反爬策略。GPT-4 吐出来的代码漂亮极了,Python 的 `requests-html` 库,异步处理,异常捕获一应俱全。我跑了个测试页,完美。于是我就放心地去睡了,让服务器自己跑。我太信任那个“100%准确”的幻觉了。问题出在哪?出在目标网站那个该死的商品列表页,它用了动态加载,但又不是纯粹的 SPA。滚动到一半,DOM 结构会变,一部分商品信息被包裹进了一个新的 `div` 里,CSS 类名没变,但父节点变了。我给的初始选择器路径,在页面后半部分全部失效。GPT-4 写的代码忠实地按照我的指令,用固定的选择器去提取,前半部分数据正常,后半部分就开始乱抓临近元素的文本,它自己毫无察觉,因为没有任何报错——它确实“成功”抓到了文本,只是那些文本毫无意义。
这就是 AI 代码的恐怖之处:它能完美执行错误指令。它没有“理解”上下文,没有“意识”到数据结构的连贯性遭到了破坏。它只是一个极度高效、也极度盲目的执行者。
我瘫在椅子上,不是累,是那种熟悉的、冰冷的技能恐慌又漫上来了。2023年了,我,一个曾经靠写爬虫吃饭的人,竟然被一个最基础的动态加载问题给埋了。我以为有了 GPT,我就不需要再去抠那些 DOM 树的细节,不需要再手动处理那些令人作呕的页面变异。我错了。AI 不是替代了我的技能,它只是把我技能里最需要“人肉判断”和“领域经验”的那部分,隐藏得更深了。它把编程从“写语法”变成了“下指令”,但下指令的精度要求,比写语法高出一个数量级。
不能再这样了。我得建立一套机制,让 AI 生成的代码,也必须被“监督”和“纠错”。我管这叫“自动化验尸官”流程。首先,任何数据抓取任务,必须配备一个实时验证层。我不再只检查 HTTP 状态码,我要检查数据本身的“健康度”。我写了个简单的校验函数,让 AI 帮我优化:比如,价格字段必须是数字或特定格式的字符串;描述字段不能少于10个字符;图片链接必须以 http/https 开头且包含常见图片后缀。这个校验函数会作为钩子,嵌入到主抓取循环里,每抓取一条,就立刻验证一条。
其次,引入“采样对比”机制。脚本正式全量运行前,先抓取第1页、中间随机一页、最后一页,各抓5条数据。然后,我手动(或者用另一个简单的、确定可靠的脚本)去同样的位置抓取同样的5条,进行逐字段比对。如果发现任何不一致,立刻中断,分析 DOM 结构差异,修正选择器逻辑。这个步骤不能省,哪怕多花半小时。
最后,是输出阶段的“结构自检”。最终生成的 JSON 文件,在关闭之前,用另一个独立的 AI 智能体(我调用 Claude 的 API)快速扫描一遍,给它几条样本数据和最终文件,让它判断“数据格式是否一致,是否存在明显的字段错乱或异常值”。让两个 AI 互相检查。
搞完这套东西,天都快亮了。我重新生成了脚本,加上了这些纠错层,跑起来。速度慢了三成,因为它每一步都在自检。但这一次,数据是干净的。看着那条条通过校验的记录,我反而松了口气。慢就是快,稳就是赢。AI 时代,程序员这层皮不是剥掉,是换了。以前我们拼的是谁能写出更精巧的代码绕过障碍;现在拼的是谁能设计出更鲁棒、更容错、能自我验证的自动化流程。代码可以 AI 写,但系统性的防御思维,那个“总觉得哪里会出事”的 paranoid,还得长在自己脑子里。














