AI书房
用书来读懂AI
这里收录金京镇律师的AI、法律、产业、历史、政治、文化主题在线书。每本书都按目录、序言、章节、尾声整理,方便连续阅读。
[AI书房] 第17章 求职数据网页信息采集工作流
Claude Code完全掌握
Claude Code完全掌握
第17章 求职数据网页信息采集工作流
金京镇
Firecrawl MCP与计划模式的联合工作流设计
屏幕左侧密密麻麻地排列着社交媒体相关的远程办公招聘信息。622条。换算成页数,足足有21页。如果用手工一条一条地抄录,就算花上一整天也做不完。正是在这里,智能体工作流展现出了它的价值。
本章将跟随一个完整流程:用Firecrawl这款工具配合Claude Code的计划模式,自动采集并整理大规模招聘数据。通过实操,你会切身感受到MCP连接服务器的真正威力。
Firecrawl是什么
Firecrawl是一款将网站转换为LLM(大语言模型)友好数据的工具。它不止于普通的网页信息采集,还能把网站文本提取为Markdown格式、截取屏幕截图、映射站点结构、批量抓取数据。
比如把麦当劳网站的URL输入进去,请求采集网页信息,它就会把该页面的所有文本以Markdown形式抓取回来。但这只是Firecrawl能力的冰山一角。网页信息采集、搜索、提取、爬取等多种功能,全部集成在同一个工具里。
MCP连接工具的工作原理
这里要引入一个关键概念:MCP(Model Context Protocol,模型上下文协议)。为了理解这个概念,不妨先想想Gmail。Gmail内部包含发送邮件、撰写草稿、获取邮件等大量独立操作。
MCP把所有这些操作打包成一个服务器,让智能体自行判断该在什么时候使用哪个工具、该填入哪些参数。
用做蛋糕来打比方:需要鸡蛋就去鸡蛋店,需要面粉就去面粉店,需要糖霜就去糖果店,一家一家跑。换成MCP的思路,只需要给智能体一把超市的钥匙就行了。「需要什么材料,自己去超市拿。」这就是MCP的核心思想。
[图17-1] MCP连接服务器概念图:通过一个连接访问多个工具的架构
安装Firecrawl MCP连接服务器
Firecrawl的官方文档中提供了MCP连接服务器的安装说明,其中也包含在Claude Code中运行的方法。把对应命令复制后传给Claude Code即可。
安装过程中会提示输入API Key(API密钥)。API Key相当于一把密码。把它直接输入到Claude Code的对话记录中,从安全角度来看并不妥当。更好的做法是存入.env文件。
发给Claude的消息示例:「我要安装Firecrawl MCP服务器,请使用这条命令。不过API Key我不会直接传给你,请帮我配置成写入.env文件的方式。」
Claude Code会在.env文件中创建一个API Key的占位符。用户从Firecrawl控制台获取API Key后,直接粘贴到对应位置并保存即可。Firecrawl免费注册赠送500积分,足够完成实操练习。
有一点需要留意。Claude Code执行Bash命令时,API Key有可能暴露在对话记录中。如果是免费密钥倒问题不大,但如果是敏感密钥,建议只让Claude Code告诉你安装方法,实际命令在另一个终端窗口中手动执行,这样更安全。
在计划模式中设计工作流
安装完成,接下来正式构建工作流。清空对话记录(/clear)后,务必切换到计划模式。从计划模式开始的理由很明确:智能体会进行更深层的思考,会扫描整个项目文件夹,还会提出你可能没想到的问题。
复制招聘页面的URL,粘贴到Claude Code中,用自然语言描述需求。
「这个URL上大约有622条招聘信息,分布在21页上。请把所有信息采集下来,整理到Excel表格中。求职时可能用到的相关字段请一个不漏地包含进去。如果你觉得有什么能让项目需求更完善的地方,请提问。」
Claude Code收到消息后,先确认能否调用Firecrawl MCP连接服务器,随即抛出一系列具体问题:是否需要采集每条招聘的详情页?Excel文件保存在哪里?是否有筛选条件?
回答完这些问题,Claude Code就会给出一份完整的执行计划。大致内容是:创建一个名为scrape_daily_remote的工具,建立一个scrape_job_listings工作流,然后执行实际的网页信息采集。
[图17-2] 计划模式下Claude Code给出的网页信息采集计划示例
将622条招聘信息整理到Excel
批准计划并选择自动接受(auto accept)模式后,Claude Code会生成一份待办清单(to-do list),然后逐项执行。
查看执行结果
任务完成后,结果呈现出来。共采集到209条招聘信息,附带多项指标和地区信息。查看左侧文件资源管理器,可以看到tools文件夹中新增了scrape_daily_remote_jobs工具,workflows文件夹中新增了scrape_job_listings工作流。
这个结构为什么重要?下次再请求同类型的网页信息采集时,Claude Code会直接复用已有的工具和工作流。如果之前有错误,它会自动修正并更新。这就是WAT框架的自我改进循环。
Excel文件的结构
打开保存在temp文件夹中的Excel文件。Claude Code自己还加上了筛选功能。列(column)的构成如下。
[图17-3] 生成的Excel文件实际截图
209条招聘信息被整理得清清楚楚。换成手工操作,半天都未必能做完的事情,Claude Code几分钟就搞定了。
上下文管理的重要性
这里分享一个实用技巧。工作过程中,屏幕底部会出现「上下文剩余45%」之类的提示。有一种现象叫上下文衰减(Context Rot),指的是对话记录越长,AI模型的表现越差。建议在上下文使用量超过60%之前,使用compact功能压缩对话。
这样做既能保留关键信息,又能清理掉多余的记录。
筛选与地区分类:提取372条欧洲销售岗位的实例
接下来把难度提升一级。要在一个没有搜索筛选功能的页面上,从214,000条全部招聘信息中只提取符合特定条件的内容。
传达需求
这一次故意使用绕过权限(Bypass Permissions)模式。不经过计划模式,直接给智能体下达一个比较模糊的指令,观察它会产出怎样的结果。
「请从这个URL采集销售(sales)相关的招聘信息。只保留欧洲地区,大约抓取500条,整理到Excel中。」
Claude Code识别出了之前创建的网页信息采集工具。它自行判断「可以复用之前做好的采集工具」,然后制定计划:先采集销售岗位信息,再按欧洲地区筛选,末尾导出为Excel。
与现实的碰撞,以及适应
可是意料之外的情况出现了。欧洲地区的销售岗位只有52条。全部销售岗位是409条,限定欧洲之后离目标的500条差了一大截。
智能体的判断能力在这一刻体现出来。Claude Code自动识别出问题,并向用户提供了几个选项。
回复「请也加上美国的销售岗位」后,智能体继续执行任务。这个过程中会生成一些临时文件。all_sales_jobs、sales_jobs_raw 等中间数据文件,以及三个用于筛选的 Python 脚本,都会创建在 temp 文件夹中。项目启动时专门设置临时文件夹的做法,此刻体现出了它的价值。
最终结果
最终共采集到 372 条销售岗位招聘信息。Excel 文件在原有字段基础上新增了 Region(地区)列。按此列筛选,可以立即区分美国、欧洲和全球(worldwide)的职位。只选欧洲的话,大约剩下 49 条。
[图 17-4] 应用了地区筛选的销售岗位 Excel 文件]
应对意外请求:生成美国牙科医生潜在客户名单
智能体工作流的真正考验,在于意料之外的请求。此前的任务都是从指定 URL 抓取招聘信息,属于比较规范化的操作。这次我们抛出一个完全不同类型的请求。
一个完全不同类型的请求
「我想联系美国的牙科医生。请帮我查找牙科医生的联系方式,整理成一份潜在客户名单的 Excel 文件。」
这个请求里没有 URL,也没有任何关于数据来源的提示。智能体必须自己找到数据源。
智能体的问题解决过程
Claude Code 先检查现有工具和工作流。接着用 Firecrawl 搜索「dentist directory(牙科医生名录)」。它找到了 ADA(美国牙科医生协会)网站,但该站点通过 JavaScript 动态渲染,静态网页采集无法正常工作。
它没有就此放弃,而是另寻出路,自行判断出 Yellow Pages(黄页)是有效的数据源。确认仅纽约市就有 3,000 名牙科医生的信息后,它开始构建新的网页采集工具。
第一次尝试只提取到 2 名牙科医生。解析模式出了问题。智能体立即检测到这个错误,修改了正则表达式(Regex)模式,并更新了工具文件本身,确保同样的问题不会再次发生。
[图 17-5] 智能体检测到网页采集错误并修复工具的过程]
自我修复的真实样貌
这个过程就是自我修复(self-healing)的真实样貌。在传统自动化中,一旦出错,开发者需要阅读日志、修改代码、重新验证。而在智能体工作流中,智能体自己完成了所有这些步骤:发现错误、分析原因、修改代码、重新验证。
最终产出
用修复后的工具重新运行,从 4 个主要城市采集到 120 名不重复的牙科医生潜在客户。Excel 文件的结构如下。
新的工作流(scrape_dentist_leads)和新的工具(scrape_dentist_leads)已自动生成。下次遇到类似请求时,这套工作流和工具可以直接复用。
多智能体策略
这里介绍一个进阶策略。在 Claude Code 中可以同时打开多个智能体。让五个智能体分别尝试不同的方法,保留产出最佳结果的工作流,删除其余的。这种方式能够并行验证哪个数据源最可靠、哪种网页采集策略最高效。
本次实操验证的结论很清晰:只要你清楚想要什么样的成果,实现它所需的技术栈和具体实现方法都可以交给智能体。无论是 622 条招聘信息、372 个销售岗位,还是 120 名牙科医生的潜在客户名单,用自然语言描述目标就能产出实际成果。那么,使用这个强大工具时,人们容易掉进哪些陷阱?接下来我们一起看看。
人工智能专家 金京镇律师
AI 法律政策专家 · 前国会议员 · 著作等身
如果这本书曾在你身边短暂停留,请支持我们,让下一个故事得以问世。
(自愿赞助账户:农协 302-1096-0948-81 户名:金京镇)
