KEEL · 龙骨 · A CURRICULUM FOR THE AI ERA

01 · 发现:搜索引擎怎么知道这个 URL 存在 — keel 龙骨

本章目标:讲清「发现(Discovery)」这一环节——搜索引擎是如何第一次听说你的某个 URL 的。 验收标准:能对任意一个新页面,说清它通过哪条路径被爬虫第一次看到。

本章目标:讲清「发现(Discovery)」这一环节——搜索引擎是如何第一次听说你的某个 URL 的。
验收标准:能对任意一个新页面,说清它通过哪条路径被爬虫第一次看到。

为什么这是第 01 章:抓取、渲染、索引都发生在"知道有这个 URL"之后。一个页面哪怕内容极好,只要从未被任何入口指向、也从未被提交,它在搜索引擎眼里就等于不存在。所有"我发布了但搜不到"的故事,第一层都要先问:它被发现了没有?


一、发现是整个流水线的入口

搜索引擎的索引不是从天上掉下来的,它由一个"待抓取队列"驱动。URL 进入这个队列的途径只有有限几条:

发现途径 谁在发起 特点
外部链接 别人网站上指向你的 <a href> 最强,自带信任传递
内部链接 你自己网站内页面之间的链接 决定性,站内结构即发现路径
sitemap 你主动提交的 URL 清单 列出"候选",不保证被抓取
历史记录 该 URL 曾经被索引过 老站迁移时很重要
手动提交/API GSC、Bing 的提交接口 快速但配额有限
重定向 301/302 的目标 URL 迁移时的主要发现路径
外链的 sitemap/资源 他人的 RSS、聚合页等 边缘但真实存在

关键认知:sitemap 是"候选清单",不是"抓取指令"。你可以在 sitemap 里放十万条 URL,爬虫是否来抓、按什么顺序抓,取决于第 02 章讲的抓取预算。


二、链接图与权重传递

搜索引擎把整个互联网看成一张有向图:页面是节点,链接是边。一条链接 A → B 同时表达两件事:

  1. 发现:B 存在。
  2. 推荐:A 认为 B 值得看。

第二点被量化的经典模型就是 PageRank 式的权重传递。不必深究公式,理解三条实践推论即可:

# 观察一个页面的站内链接分布(以自建站点为例)
curl -s https://www.xxxxxx.cn/learning/ \
  | grep -oE '<a [^>]*href="[^"]+"' | wc -l

实践含义:如果你的重要页面只有首页顶端一个入口,其余全站都不指向它,那么它在链接图里就是一个"孤立节点"——发现权重极低。


三、外链与内链的作用边界

新手最容易混淆的就是这两者的分工。它们不是同一件事:

维度 内链(站内) 外链(站外)
你能控制吗 完全可控 基本不可控
主要作用 发现 + 站内权重分配 + 相关性上下文 信任与权威的背书
见效方式 结构一改就生效 积累缓慢,可能被惩罚
主要风险 内链成环/死链/权重被稀释 买到垃圾链接被判定作弊
官方明确表态 是(Google 明确鼓励良好内链) 是(外链仍是重要信号之一)

边界要说清:


四、一个 URL 被发现的完整路径

以本站一节课 /learning/courses/tools/lessons/1/ 为例,它可能被发现的路径:

首页 /learning/
  └─ 课程列表页
       └─ 课程详情页
            └─ 第 1 课  ← 通过三层内链被爬虫顺着跟到
同时:sitemap.xml 中列出了该 URL(作为候选)
同时:若有人在外部分享,则多一条外链入口

验证:用无 JS 的 curl 顺着链接能否走到底?

# 从首页出发,抓取所有站内链接,看目标页面是否可达
curl -s https://www.xxxxxx.cn/learning/ | grep -oE 'href="[^"]+"' | sort -u

如果某重要页面在任何层级的 HTML 里都找不到 <a href>,而只在 sitemap 里,那它的发现就完全依赖爬虫主动读 sitemap —— 这是有风险的单点。


五、你要满足的准入条件

条件 判据 不满足的后果
页面有至少一条可抓取入口 站内有 <a href> 或外部有链接 只能靠 sitemap,发现慢甚至不发生
入口链接本身可被抓取 入口页不是 noindex、不被 robots 屏蔽 链接等于不存在
sitemap 覆盖了全部重要 URL SQL:sitemap 条数 ≈ 站内可达 URL 数 新页面发现延迟
URL 稳定且唯一 无重复参数形式 同一内容多入口,权重分散
不是孤立节点 从首页出发 N 跳可达 长期不被抓取

六、故障速查

现象 最可能的发现层原因 处理
新页面几天都不出现 无任何入口,且未提交 sitemap 内链 + 提交 URL
只有首页被收录 内链是 JS 生成的,爬虫看不到 改成 HTML 直出的 <a href>
部分页面收录部分不收录 抓取预算有限(见第 02 章) 提升重要页面的内链权重
sitemap 提交了但没用 sitemap 里全是 301/404 只放 200 的 canonical URL
站内链接成环、互相指 结构没分层 用面包屑 + 层级目录重排

七、本章验收

# 一条命令粗看首页出链数量与是否含目标页面
curl -s https://www.xxxxxx.cn/learning/ | grep -c '<a '

发现是起点。URL 被发现了,下一章的问题才轮到"爬虫愿意花多少成本来抓它"——那是抓取预算的事。

进入 keel 阅读