mcpField
A
algo-seo-crawl

algo-seo-crawl

github.com/asgard-ai-platform数据与数据库24337 次安装21 周前更新
代码仓库

关于 algo-seo-crawl

面向构建网站审计、结构化数据采集或 SEO 站点地图的开发者的网页爬取指南,介绍遵守 robots.txt 和按域名限速的范围内爬取流程。

主要功能

  1. 01管理 URL 队列
  2. 02检查 robots.txt 和爬取范围
  3. 03按延迟与重试策略抓取页面
  4. 04提取链接、内容和元数据
  5. 05规范化 URL 并规避爬取陷阱

适用场景

  1. 01为网站审计发现页面及链接结构
  2. 02大规模采集网站结构化数据
  3. 03绘制用于 SEO 分析的站点架构

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/asgard-ai-platform/skills --skill algo-seo-crawl

安装后在 Claude Code 中输入/algo-seo-crawl确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

examples/
sample_scenario.md
references/
distributed-crawl.md
url-normalization.md

详细介绍

网页爬虫

概述

网页爬虫通过发现 URL、获取内容、解析 HTML 并存储结果,系统地遍历网页。它使用 BFS 或基于优先级的待爬队列管理方式。其性能受 I/O 限制,通常受礼貌性约束影响,而非计算能力限制。

适用场景

触发条件:

  • 构建网站审计工具,以发现所有页面及其链接结构
  • 大规模收集网站上的结构化数据
  • 绘制网站架构图以进行 SEO 分析

不适用场景:

  • 需要从单个 API 端点获取数据时(直接使用 HTTP 客户端)
  • sitemap.xml 已提供所需的全部 URL 时(改为解析 sitemap)

算法

IRON LAW: Respect robots.txt and Rate Limits
A crawler MUST:
1. Parse and obey robots.txt before crawling any path
2. Enforce crawl-delay (default 1s if unspecified)
3. Identify itself with a descriptive User-Agent
Ignoring these is unethical and will get your IP blocked.
阶段 1:输入验证

解析种子 URL,获取并解析每个域名的 robots.txt,设置爬取范围(同域、子域或跨域)。 **关卡:**种子 URL 有效,已加载 robots.txt 规则,已定义爬取范围。

阶段 2:核心算法
  1. 使用种子 URL 初始化 URL 待爬队列(优先级队列或 FIFO)
  2. 取出 URL,检查其是否尚未访问、是否允许 robots.txt 爬取,以及是否在范围内
  3. 设置超时和重试逻辑来获取页面,并遵守 crawl-delay
  4. 解析 HTML:提取链接(规范化、去重),提取内容和元数据
  5. 将发现的 URL 加入队列,并存储解析后的数据
  6. 重复以上步骤,直到待爬队列为空或达到限制
阶段 3:验证

检查:爬取日志中没有违反 robots.txt 的记录,没有存储重复页面,所有发现的 URL 均已处理。 **关卡:**爬取在指定范围内完成,并遵守礼貌性要求。

阶段 4:输出

返回包含页面、链接图和提取的元数据的网站地图。

输出格式

{
  "pages": [{"url": "...", "status": 200, "title": "...", "links_out": 15, "depth": 2}],
  "metadata": {"pages_crawled": 500, "errors": 12, "duration_seconds": 300, "domain": "example.com"}
}

示例

示例输入/输出

**输入:**种子:"https://example.com",max_depth:2,max_pages:100 **预期:**爬取树中首页位于深度 0,链接页面位于深度 1–2,并遵守 robots.txt

边界情况
输入预期原因
robots.txt 禁止爬取 /爬取 0 个页面必须遵守完整的禁止规则
重定向循环5 次重定向后停止防止无限循环
软 404(错误页面返回 200)标记为软 404仅凭状态码不足以判断

注意事项

  • URL 规范化:http://Example.COM/path/ 和 http://example.com/path 是同一个 URL。规范化方式:将主机名转为小写、移除默认端口、移除末尾斜杠、对查询参数排序。
  • JavaScript 渲染的内容:基础 HTTP 获取无法获取 JavaScript 渲染的内容。对于 SPA,使用无头浏览器(Playwright/Puppeteer)。
  • 陷阱检测:日历页面、URL 中的会话 ID 和无限分页都会形成爬虫陷阱。设置最大深度和 URL 模式限制。
  • 自行触发速率限制:并行获取却不按域名限制速率,会压垮小型服务器。使用按域名划分的信号量。
  • 字符编码:并非所有页面都使用 UTF-8。根据 HTTP 标头和 meta 标签检测编码;检测失败时,使用字符集检测库。

参考资料

  • URL 规范化规则(RFC 3986),参见 references/url-normalization.md
  • 分布式爬取架构,参见 references/distributed-crawl.md

评论

支持 Markdown