简介:这是一套面向开发者与自动化运营人员的网页内容智能读取工具集,专为适配微信公众号、小红书、今日头条等中国主流平台设计,解决多平台内容抓取、结构化解析与轻量级交互(如自动检索、评论、发布)的技术落地难题。资源包共11个文件,含6个核心Python脚本(实现URL识别、微信/小红书内容提取、格式转换与本地保存)、2份Markdown文档(含技能说明与使用指南)、1个JSON元数据配置文件、1个TXT占位文件及1个.gitignore,整体仅22KB,轻量易集成。已有70人学习下载,适合希望快速接入平台内容API替代方案、构建私有化信息采集管道或拓展Claude/Codex类模型输入能力的中初级开发者。读者可直接复用模块化脚本,结合metadata.json灵活配置目标平台,通过url_reader.py统一调度,无需从零开发爬虫逻辑,显著降低合规性风险与维护成本。
1. 项目概述:一个能“读懂”主流平台的智能助手
最近在折腾一个挺有意思的东西,我把它叫做“智能网页内容读取器”。简单来说,它就是一个基于 Claude Code Skill 开发的工具,核心目标就一个:帮你把微信公众号、小红书、今日头条这些主流平台上的文章、笔记、视频信息,干净利落地“读”出来,并整理成结构化的数据。
为什么需要这么个东西?相信很多做内容分析、市场调研或者个人知识管理的朋友都深有体会。你想研究某个领域的公众号文章趋势,手动一篇篇点开、复制、粘贴,效率低到令人发指。小红书上的爆款笔记图文并茂,但你想保存下来离线阅读或者分析文案结构,却发现平台并不提供方便的导出方式。今日头条的网页版内容虽然开放,但夹杂着大量广告、推荐流和无关元素,直接抓取下来的是一团乱麻。这个工具就是为了解决这些痛点而生的——它不是一个简单的爬虫,而是一个具备一定“理解”能力的读取器,能自动识别并提取出页面的核心内容主体,过滤掉干扰信息,让你拿到最纯净的标题、作者、正文、发布时间和多媒体资源链接。
这个项目特别适合几类人:一是内容创作者和运营人员,需要监测竞品或采集素材;二是数据分析师和研究者,需要批量获取文本数据进行舆情或趋势分析;三是普通用户,希望更高效地收藏和整理来自不同平台的优质内容。它基于 Claude Code Skill 构建,意味着你可以利用 Claude 强大的代码理解和生成能力,来定制和扩展这个工具,适应不同平台千变万化的页面结构。
2. 核心设计思路与技术选型
2.1 为什么选择 Claude Code Skill 作为基础框架?
首先得明确,我们面对的不是静态的、结构固定的网页。像微信公众号文章,它的真实内容往往是通过复杂的 JavaScript 动态渲染出来的,直接看网页源代码是一堆脚本,看不到正文。小红书和今日头条的移动端页面更是如此,充斥着大量的异步加载和客户端渲染。
传统的爬虫技术路线,比如直接用requests库抓取 HTML,在这里会立刻碰壁。更高级的方案是使用Selenium或Playwright这类浏览器自动化工具,模拟真实用户操作,等待页面完全加载后再提取数据。这方法可行,但代价是沉重的:每个页面都需要启动或复用浏览器实例,消耗大量内存和 CPU 资源,速度慢,且难以大规模并发处理。
Claude Code Skill 提供了一个全新的思路。它本质上是一个允许 Claude AI 模型在受控环境中执行代码、访问网络资源的接口。我们的“读取器”本身是一段清晰的指令和逻辑代码,交给 Claude 去理解和执行。Claude 能够像一个人一样去“浏览”网页:它可以解析 JavaScript,等待动态内容加载,理解页面的视觉和语义结构。我们不需要自己写复杂的反爬虫逻辑或解析规则,只需要告诉 Claude:“去这个网址,找到文章的主标题和正文内容,然后以 JSON 格式返回给我。” Claude 会帮我们完成剩下的工作。
这种方案的巨大优势在于适应性。平台的前端结构经常改版,一个基于固定 XPath 或 CSS 选择器的爬虫很容易失效。而 Claude 依靠其对网页内容的语义理解,即使页面布局变了,只要它能识别出“这是一个标题”、“这是一段正文”,它就能准确地提取出来。这大大降低了工具的维护成本。
2.2 针对不同平台的差异化解析策略
虽然核心原理一致,但针对每个平台的特点,我们需要在 Claude Code Skill 的指令中嵌入一些针对性的策略,这也是设计的关键。
对于微信公众号:最大的挑战在于绕过“点击展开全文”和解决动态渲染。我们的指令会明确要求 Claude 模拟“滚动”或“交互”行为,确保所有内容都被加载出来。另外,公众号文章的特色元素如“阅读原文”链接、公众号名片、赞赏按钮等,需要在指令中明确告知 Claude 这些是非核心内容,应当排除。提取目标应聚焦于:文章标题、公众号名称、发布日期、正文(含图文)、文章内的视频/音频链接。
对于小红书:小红书笔记的页面结构相对独特,包含主图/视频、标题、正文描述、标签、评论区域等。我们的策略是双管齐下。一方面,通过解析小红书的分享链接(形如https://www.xiaohongshu.com/explore/...或xhslink.com短链),获取笔记的基础信息。另一方面,指令会要求 Claude 特别注意提取高清图片的源地址(通常需要从特定的数据接口或图片标签中解析),以及视频的播放地址。对于纯图文笔记,目标输出是高清图片链接数组和正文文本;对于视频笔记,则是视频流地址和文案。
对于今日头条(网页版):今日头条的网页版内容虽然可直接访问,但页面噪音极大,有侧边栏、相关推荐、广告插条等。这里的指令重点在于“内容区域定位”。我们需要指导 Claude 识别出代表文章主体的那个div容器,通常它会有特定的类名或 ID。然后,只从这个容器内提取标题、作者、正文和嵌入的图片/视频。对于今日头条的微头条或问答等短内容格式,也需要有对应的识别逻辑。
通用策略与降级方案:在所有指令中,我们都会加入“降级解析”逻辑。即,如果 Claude 无法通过语义完美定位内容,则尝试回退到更基础的 HTML 结构分析,比如寻找最大的连续文本块、或寻找包含article、main标签的区域。这确保了工具在极端情况下的鲁棒性。
3. 核心功能模块拆解与实现
3.1 链接智能识别与路由模块
用户可能输入各种形式的链接:公众号文章链接、小红书分享链接(可能带参数)、今日头条文章链接,甚至是一些聚合平台转发的链接。第一步必须是准确识别链接所属的平台,并路由到对应的解析逻辑。
这个模块的实现并不复杂,但要求精准。我们可以维护一个“平台特征-正则表达式”的映射表。例如:
- 微信公众号:匹配域名包含
mp.weixin.qq.com且路径符合/s?__biz=模式。 - 小红书:匹配域名
www.xiaohongshu.com或xhslink.com,并且路径中包含/explore/或/discovery/。 - 今日头条:匹配域名
www.toutiao.com或toutiao.com,并且路径为/article/或/i开头。
识别后,模块会调用对应的“平台专属解析指令”,并将目标 URL 作为参数传入。这里的一个关键细节是链接清洗,比如去除追踪参数(utm_source等),确保传递给 Claude 的是最干净的地址。
3.2 基于 Claude Code Skill 的内容提取引擎
这是整个工具的心脏。我们为每个平台预定义了一套“系统指令”和“用户指令”模板。
以微信公众号为例,一段简化的指令模板可能如下(实际指令会更详细和严谨):
# 系统指令:定义角色和能力 你是一个专业的网页内容提取助手。你将获得一个网页URL,你的任务是访问该URL,等待页面完全加载(包括所有动态内容),然后识别并提取出核心的文章内容。 # 用户指令:具体任务和格式要求 请访问以下微信公众号文章链接:{url} 请执行以下操作: 1. 模拟人类浏览行为,确保页面完全渲染,特别是需要“展开全文”的内容。 2. 提取以下信息,并以严格的JSON格式返回: - `title`: 文章主标题。 - `author`: 发布文章的公众号名称。 - `publish_time`: 文章发布日期和时间(尽量转换为YYYY-MM-DD HH:MM:SS格式)。 - `content`: 文章的正文文本,移除所有广告、推荐阅读、关注二维码等非正文元素。保留段落结构,可以用换行符分隔段落。 - `image_urls`: 正文中出现的所有图片的源地址(src)列表。 - `video_urls`: 正文中嵌入的所有视频的源地址列表。 3. 如果遇到无法访问或页面不存在的情况,返回错误信息。当这个指令通过 Claude Code Skill 发送后,Claude 会在一个安全的代码执行环境中启动一个无头浏览器(如 Puppeteer),加载页面,执行指令,并将结果返回。
注意:在实际操作中,需要特别注意 Claude Code Skill 的使用限制和成本。每次调用都可能消耗 Token 并产生费用。因此,指令要尽可能精确,避免让 Claude 执行不必要的操作或返回过于冗长的中间过程。一个优化技巧是,在指令中明确要求“只返回最终的 JSON 结果”,减少无关输出。
3.3 数据清洗与结构化输出模块
从 Claude 返回的数据已经是结构化的 JSON,但我们还需要进行后处理,以确保数据的质量和一致性。
- 文本清洗:移除正文中可能残留的不可见字符、多余的空格和换行。对于中文文本,进行基本的规范化处理。
- 多媒体链接验证与过滤:检查提取到的
image_urls和video_urls,过滤掉可能是图标、头像、广告素材的链接(通常通过文件大小、URL 路径关键词或图片尺寸来判断)。对于微信公众号,文章封面图有时会混入,需要根据上下文判断是否保留。 - 时间格式标准化:不同平台的时间格式五花八门,“昨天 20:30”、“3小时前”、“2023-10-01”等等。我们需要一个时间解析器,尽可能将这些相对时间或不同格式的绝对时间,统一转换为标准的 ISO 8601 或自定义格式。
- 富文本格式化(可选):有些应用场景可能需要保留基础的富文本格式,比如加粗、列表。这可以在指令中要求 Claude 以 Markdown 格式输出
content,然后在后处理阶段进行验证和清理。
处理完成后,模块将最终的数据写入到指定的输出中,可以是保存为本地 JSON/CSV 文件,直接打印到控制台,或者通过 API 返回给调用者。
4. 实操部署与使用指南
4.1 环境准备与 Claude API 配置
要运行这个工具,你首先需要一个 Claude API 密钥。前往 Anthropic 的官方平台注册并获取。接着,你需要一个能运行 Python 脚本的环境。
项目依赖的核心库通常包括anthropic(官方 Claude SDK)、requests(用于简单的链接验证或降级抓取)、json、re(正则表达式)等。建议使用虚拟环境管理依赖。
# 创建并激活虚拟环境(以 conda 为例) conda create -n web-reader python=3.9 conda activate web-reader # 安装核心依赖 pip install anthropic requests关键的配置步骤是将你的 Claude API 密钥设置为环境变量,这比硬编码在代码中更安全:
# 在 Linux/macOS 的终端中 export CLAUDE_API_KEY='your-api-key-here' # 在 Windows 的 PowerShell 中 $env:CLAUDE_API_KEY='your-api-key-here'4.2 工具调用方式与参数详解
我们可以将工具设计成一个命令行程序,这样灵活性最高。假设主脚本名为smart_reader.py。
基础调用:
python smart_reader.py --url “https://mp.weixin.qq.com/s/...” --output article.json--url:必需参数,指定要读取的目标网页链接。--output:可选参数,指定结果保存的文件路径。如果不提供,结果将打印到标准输出。
高级参数:
--platform:手动指定平台(wechat,xiaohongshu,toutiao)。通常工具会自动识别,但在自动识别失败或需要强制使用某平台解析逻辑时使用。--format:输出格式,如json(默认)、csv、markdown。--timeout:设置整个读取过程的超时时间(秒),防止因网络或页面问题卡住。
在脚本内部,逻辑流程是:解析参数 -> 识别平台 -> 加载对应的 Claude 指令模板 -> 填充目标 URL -> 通过 Claude Code Skill 调用 API -> 接收并清洗结果 -> 按格式输出。
4.3 一个完整的实战案例:抓取并分析小红书爆款笔记
假设我们想分析小红书“健康养生”赛道下某个爆款视频笔记的内容和素材。
获取目标链接:在小红书 App 中找到该笔记,点击分享,复制链接。链接可能像:
https://www.xiaohongshu.com/explore/1234567890abcdef或一个短链https://xhslink.cn/o/6jabsi9npcb。执行抓取:
python smart_reader.py --url “https://xhslink.cn/o/6jabsi9npcb” --output health_note.json结果解析:打开生成的
health_note.json,你可能会看到如下结构的数据:{ “platform”: “xiaohongshu”, “note_id”: “1234567890abcdef”, “title”: “三伏天养生茶,喝出好气色!”, “author”: “养生小能手”, “publish_time”: “2023-07-15 14:30:00”, “content”: “最近三伏天,湿气重容易疲惫...(完整的笔记文案)”, “image_urls”: [“https://ci.xiaohongshu.com/.../image1.jpg”, ...], “video_url”: “https://sns-video-hw.xhscdn.com/.../video.mp4”, “tags”: [“养生”, “三伏天”, “健康茶饮”] }后续应用:你可以用这个数据做很多事:
- 内容分析:分析文案结构、高频词、情感倾向。
- 素材下载:使用
video_url和image_urls里的链接,配合下载工具(如wget或aria2)批量保存视频和图片素材(请注意遵守平台条款和版权法律)。 - 竞品监控:定期抓取一批对标账号的最新笔记,建立自己的内容数据库。
实操心得:在抓取小红书视频时,返回的
video_url有时可能是临时的、带鉴权的地址,有效期很短。如果是为了即时下载,需要尽快处理。如果是用于分析,存储文案和封面图信息通常就够了。另外,频繁对同一平台发起大量请求,即使通过 Claude,也可能触发反爬机制,导致临时封禁。建议在脚本中加入随机延迟,并控制抓取频率,模拟人类行为。
5. 常见问题排查与优化技巧
在实际使用中,你肯定会遇到各种各样的问题。下面是我踩过坑后总结的一些常见情况及解决办法。
5.1 内容提取不全或错位
问题现象:返回的 JSON 中,content字段只有一两句话,或者混入了大量的评论、侧边栏推荐文字。
排查思路:
- 检查指令精度:首先回顾发给 Claude 的指令是否足够明确。是否清晰地定义了什么是“正文主体”?对于目标平台,有没有特有的干扰元素需要排除?比如在今日头条的指令中,必须强调“排除
class包含recommend或ad的div”。 - 手动验证页面:用浏览器打开目标链接,检查页面本身在完全加载后,核心内容是否正常显示。有些页面可能需要登录才能看全文(如某些专栏文章),或者内容本身就被截断了。Claude 也无法突破这种权限或设计限制。
- 启用调试模式:可以在指令中增加一步,要求 Claude 在提取前,先输出它认为的页面主要结构或内容区域的 HTML 片段。这能帮你判断 Claude “看”到的页面和你看到的是否一致。
解决方案:优化指令。使用更具体的描述,例如:“请找到页面中字体最大、通常位于顶部的标题文本作为title”;“请将class属性包含article-content或rich_media的div元素内的所有文本作为content”。结合语义和结构双重约束,效果更好。
5.2 处理平台反爬与访问限制
问题现象:Claude 返回错误,提示页面无法访问、遇到验证码,或者返回的数据是空白或反爬提示。
原因分析:即使通过 Claude 模拟浏览器,过于频繁或规律的请求仍然可能被服务器识别为爬虫行为。一些平台对来自数据中心 IP(云服务商的 IP)的访问本身就有更严格的限制。
应对策略:
- 降低请求频率:在批量抓取脚本中,在每次调用 Claude Code Skill 之间插入随机延时,比如
time.sleep(random.uniform(3, 10))。 - 使用代理IP(高级):虽然 Claude Code Skill 的执行环境可能不直接支持配置代理,但你可以探索是否有方法通过指令让 Claude 使用的无头浏览器走代理。这通常需要更底层的控制,实现起来较复杂。一个更可行的思路是,对于反爬不严的站点,直接降级使用
requests配合代理 IP 池进行简单抓取,作为备用方案。 - 接受限制:认识到这是与平台规则的博弈。对于个人、小规模、低频的抓取需求,通常问题不大。如果需要进行大规模数据采集,应首先查阅平台的
robots.txt文件和相关服务条款,考虑使用官方提供的 API(如今日头条开放平台),或寻求合法合规的解决方案。
5.3 性能优化与成本控制
问题:Claude Code Skill 的调用按 Token 计费,且处理一个复杂页面可能需要几十秒,对于大量抓取来说,时间和金钱成本都可能很高。
优化技巧:
- 指令精炼:去除指令中所有不必要的描述和步骤。让 Claude 做最少且必要的工作。例如,如果不需要多媒体链接,就在指令中明确说明不提取
image_urls和video_urls。 - 缓存机制:对于已经成功抓取过的 URL,将其结果(至少是核心内容)缓存到本地数据库或文件中。下次再遇到相同请求时,直接返回缓存结果,避免重复调用 API。可以为缓存数据设置一个合理的过期时间。
- 异步与并发(谨慎使用):虽然可以编写异步代码同时发起多个 Claude 请求,但必须非常小心。一方面,这可能会快速消耗 API 额度并导致限流;另一方面,过高的并发请求更容易触发平台的反爬机制。如果确有必要,建议设置一个很小的并发数(如2-3),并做好错误重试和退避处理。
- 降级解析策略:实现一个简单的本地 HTML 解析器作为备用。对于结构简单、无需 JavaScript 渲染的页面(例如某些今日头条的纯文本文章),可以先尝试用
requests+BeautifulSoup本地解析,如果失败或内容不全,再 fallback 到 Claude Code Skill。这能节省大部分简单页面的处理成本。
5.4 数据存储与后续处理建议
抓取到的数据如果只是看一眼就丢,价值就大打折扣了。这里有一些后续处理的建议:
- 数据库存储:考虑使用轻量级的 SQLite 或更强大的 PostgreSQL/MongoDB 来存储抓取结果。设计数据表时,除了保存原始 JSON 字段,最好把
title,author,publish_time,platform等常用查询字段单独列出来,并建立索引,这样后续分析时查询速度会快很多。 - 去重:基于
url或平台内部的note_id/article_id进行去重,避免数据冗余。 - 建立增量抓取流程:对于需要持续关注的公众号或小红书账号,可以定期(如每天)运行脚本,只抓取发布时间晚于上次抓取时间的新内容。这需要你记录每个数据源的最后抓取时间。
- 内容分析与可视化:将文本数据导入到数据分析工具中,进行词频统计、情感分析、主题建模等。用
publish_time字段可以做发布节奏分析。用image_urls的数量可以简单衡量笔记的“丰富度”。这些都能为你提供更深层次的洞察。
这个智能网页内容读取器项目,将 Claude 的语义理解能力与具体的业务需求结合,打开了一扇高效处理非结构化网页内容的大门。它的强大之处不在于用了多高深的技术,而在于找到了一个巧妙的切入点,用 AI 的能力弥补了传统爬虫在适应性和智能化上的不足。当然,工具永远只是工具,如何使用它,如何在效率、成本和合规性之间找到平衡点,才是我们更需要持续思考和实践的。
本文还有配套的精品资源,点击获取