一日一技:Vibe Coding 时代,如何用系统设计思路给大模型爬虫省钱提速

在大模型出来之前,计算机领域一直流行着这样一句名言:计算机领域的任何问题,都可以通过拆分问题+给系统增加若干个层来解决。 实际上,这句话在现在的 AI 时代,依然是绝对的真理。

例如以前面试经常问的一个老掉牙的系统设计问题:如何设计一个短网址系统?标准答案是,使用内存+Redis+数据库做多级存储架构。读取最频繁的短网址放到内存,其次的放到 Redis,不频繁的放到数据库。通过增加分层,完美解决高并发和存储成本的矛盾。

现在有了大模型,大家都在玩 Vibe Coding(用自然语言指挥 AI 写代码),很多人觉得以前的工程经验没用了,反正大模型什么都能干。但我认为恰恰相反,在用 AI 写代码时,大家更应该把“拆分与分层”这句话牢牢记在心里。

举个现实的例子,你想做一个招聘聚合网站,需要从各个公司的官网抓取他们的招聘信息,获得工作详情。

如果你没有任何工程经验,是个纯小白,你可能直接就甩给 AI 这样一段提示词:

帮我设计一个爬虫系统,我输入某公司的官网,你需要进入官网,找到里面的招聘页面,然后进入每一个工作,抓取工作的名字,工作地点,薪资和工作要求,并储存到数据库。

我相信现在很多人就是这样写的。并且不得不承认,现在的模型确实太聪明了——如果你用例如 Claude Opus 4.6 或者 Opus 4.7,再加上 Claude Code 这种工具,写出来的基于 Browser Use 的智能爬虫确实能运行,甚至效果可能还不错。它会自己打开浏览器,截图,识别哪里是下一页,哪里是详情。

有同学可能会说,既然能跑通,而且不用我写一行代码,那这不就足够了吗?

但如果你真的把它扔到服务器上跑,你会发现这样设计的系统有两个致命缺陷:

  1. 成本极高,简直是在烧钱。 这个系统大概率会强依赖 Browser Use 和多模态视觉模型。大模型其实是在“看”网页。每次打开页面都要截图,把截图传给 API,让大模型通过视觉能力去识别按钮在哪里,判断下一步怎么操作。几千个网页抓下来,那庞大的 Token 消耗量和昂贵的 API 调用费,会让你当场破产。
  2. 速度极慢,慢到令人发指。 每次网页跳转、翻页、点进详情,都要和大模型进行一次甚至多次交互。大模型推理是需要时间的,一次交互被拉慢 30 秒甚至一分钟非常正常。抓一个公司的招聘列表,可能要跑到天荒地老。

作为一个软件工程师,我想说的是,如果你把大模型当成一个无需思考的“黑盒”,你一定会被它的成本反噬。实际上,如果有工程经验和系统设计经验,即使我们现在不手写代码了,在使用 Claude Code 进行 Vibe Coding 时,也一定会给系统多增加一些限制。

既然单靠大模型硬干太蠢且太贵,我们可以通过增加分层,设计一个三级火箭式的爬虫架构:

第一层:寻找并拦截后端接口(低成本、光速)

现在的现代网站,极大比例都是前后端分离的,通过 Ajax 异步加载数据。前端渲染得再花哨,本质上也是接收了后端返回的 JSON 数据。

在使用 Vibe Coding 时,我不会让 AI 直接去“看”网页,而是会给它这样下指令:

先不要去解析 HTML。请先写一段代码尝试抓包或者分析该网站的网络请求(Network),重点寻找返回 JSON 格式工作信息的 API 接口。如果找到了 API,直接提取关键字段储存。

只要第一层走通了,我们就拿到了最原始、最干净的数据。拿到以后改一下字段名马上就能入库,不需要任何 HTML 解析和浏览器渲染。速度拉满,而且运行时完全不消耗大模型 Token,成本为零。

第二层:大模型生成解析规则(中成本、高并发)

当然,并不是所有网站都有现成的 JSON 接口可以抓,遇到那些传统的服务端渲染(SSR)页面怎么办?直接上 Browser Use 吗?错。

大模型在第一次运行时,可以完整走完网页分析流程。但请注意,它这次的目的并不是直接提取数据,而是去生成“提取规则”。

这个时候我的 Prompt 会变成这样:

这是一个服务端渲染的 HTML 网页。请你分析这个网页的 DOM 结构,帮我写出提取工作名字、地点、薪资的 XPath 规则或者 BeautifulSoup/正则表达式的提取代码。将这套代码封装成一个 Python 函数。

大模型只在写代码、定规则的“第一次”参与工作。接下来从第二次抓取开始,我们就可以像跑传统爬虫一样,发送 HTTP 请求,拿着大模型写好的规则去提取数据。在这个日常运行的过程中,完全不再需要依赖浏览器,也不需要向大模型发请求。大并发跑起来毫无压力。

第三层:Browser Use 智能兜底(高成本、低频)

只有在前两步都彻底搞不定——例如遇到了极其恶心的动态混淆、页面数据被 Canvas 加密、或者极其严格的反爬机制,传统的 HTTP 请求和规则提取都失效了,这时候,我们才祭出最后的杀招:使用真实的浏览器环境 + 大模型视觉识别来兜底。

明确告诉 AI:

如果前面的静态抓取和 API 接口都失效了,请回退到使用 Playwright/Browser Use 控制真实浏览器,通过截图和大模型视觉能力,点击对应元素来获取数据。

既然这是少数极其难啃的硬骨头,那这部分高昂的时间和金钱成本就是我们可以接受的。

总结

通过把系统拆分成“API拦截 -> 规则生成 -> 智能视觉兜底”这三个层,大量常规请求被第一层和第二层拦截,极大地降低了系统对昂贵大模型 API 的调用频次。我们可以显著降低 90% 以上的 API 成本,并极大提高爬虫的运行效率。

大模型确实能帮你敲代码,极大降低了编程的门槛。但如何设计一个优雅、省钱、可扩展且高效的系统,依然需要你脑子里的工程智慧。在 Vibe Coding 时代,AI 替代的是你的手,而不是你的脑子。