基于大语言模型的智能爬虫 Crawlab AI 实践
'如果我当年去问顾客他们想要什么,他们肯定会告诉我:一匹更快的马' – 亨利•福特
前言
当我初入职场时,作为数据分析师的我,偶然体验到了网络爬虫(Web Crawler)自动化提取网页数据的能力,自此我一直对这个神奇的技术充满好奇。随着后来我不断钻研爬虫技术,逐渐了解到网络爬虫的核心技术,其中就包括网页解析(Parsing),即通过分析网页 HTML 结构而构建基于 XPath 或 CSS Selector 数据提取规则的过程。
这个过程长期以来都需要人工介入,虽然对于爬虫工程师来说相对简单,但如果需要大规模抓取,这个过程是非常消耗时间的,而且随着网页结构变化会增加爬虫维护成本。本篇文章将介绍我开发的基于**大语言模型(LLM)**的智能爬虫产品:Crawlab AI。虽然它还处于早期开发阶段,但已经展现出强大的潜力,有望让数据从业者轻松获取数据。
相关工作
作为爬虫管理平台 Crawlab 的创始人,一直都热衷于让数据获取变得简单和轻松。跟数据从业者不断交流,我意识到智能爬虫(或通用爬虫)的大量需求,即不用人工编写解析规则就可以抓取任何网站的目标数据。
当然,也不止我一个人在研究和试图解决这个问题:
- 2020 年 1 月,青南大佬发布了基于标点密度的通用文章解析库 [GeneralNewsExtractor],可以 4 行代码实现通用新闻爬虫;
- 2020 年 7 月,崔庆才大佬发布了 [GerapyAutoExtractor],基于 SVM 算法实现了列表页数据抓取;
- 2023 年 4 月,通过高维度向量聚类算法,开发了 [Webspot],同样可以自动提取列表页。
这些开源软件的主要问题在于,识别的精准度与人工编写的爬虫规则有一定差距。此外,商业爬虫软件 [Diffbot] 通过自研的机器学习算法,也实现了部分通用数据抓取的功能。但可惜的是它们的使用成本相对较高。例如,Diffbot 的最低套餐就需要每月支付 299 美元的订阅费。
随着 2023 年大语言模型(LLM)的大爆发,智能爬虫研究似乎又找到新方向。ChatGPT 接入 Bing Search 之后,我们可以让其直接访问某个 URL 并根据内容提问。[Builder.io] 发布的 [GPT-Crawler] 可以全站抓取目标网站并接入 GPTs。利用提示工程(Prompt Engineering)在 ChatGPT 中实现了通用爬虫。
Crawlab AI 核心原理
根据前人关于 LLM 在数据抓取方面的研究结果,我突然意识到 LLM 在或许不仅擅长处理文本,还可以处理更多非结构化数据,包括 HTML。于是,我试着利用 LLM 去解析网页 HTML,并根据要求提取出相应的数据,发现效果出人意料的好。
LLM 不仅能准确提取出网页中的目标数据,而且能够将目标数据所在的节点路径通过 CSS Selector 提供出来。这样就可以让 LLM 根据 HTML 生成相应的提取规则,从而最终生成对应的爬虫代码。因此,利用 LLM 生成爬虫代码进行抓取的想法应运而生,我也根据这个思路发布了 Crawlab AI。
目前 Crawlab AI 处于早期开发阶段,只提供一个网页让用户输入待解析网页的 URL,然后自动解析出数据,并生成爬虫代码。

技术架构流程
- URL 输入与 Fetch: 用户输入目标网址,系统后台发起 HTTP 请求获取页面源码。
- HTML 预处理: 去除无关脚本、样式标签,保留核心 DOM 结构,减少 Token 消耗。
- Prompt 构建: 将清洗后的 HTML 片段与任务指令(如'提取电影名称、评分')组合成大模型提示词。
- LLM 推理: 调用大语言模型接口,返回 JSON 格式的结构化数据及对应的 CSS Selector。
- 代码生成: 根据提取的规则,模板化生成 Python、Node.js 或 Go 语言的爬虫脚本。
- 验证与下载: 用户预览结果,确认无误后下载代码本地运行。
列表解析实战
首先,我们访问 Crawlab AI 平台。










