常见问题

入口页把链接写在 JSON-LD 结构化数据里:搜索蜘蛛会当成可抓取链接吗

有站长把目标链接写进入口页的 JSON-LD,指望搜索蜘蛛顺着抓取。本文说明结构化数据里的 URL 与 a 标签的区别,解释爬虫为什么不会把它当链接跟进,并给出更可靠的 URL 发现与验证做法。

常见问题

入口页把链接写在 JSON-LD 结构化数据里:搜索蜘蛛会当成可抓取链接吗

不少人在入口页做优化时,会想到用 JSON-LD 来放目标链接,理由也很直接:结构化数据是搜索引擎官方支持的格式,看起来比一堆 a 标签更“正规”。但把它当成链接发现的通道,通常是要落空的。

先说结论:JSON-LD 里的 URL 是数据,不是链接

搜索蜘蛛发现 URL 的主要途径,是解析 HTML 里能构成链接的节点:a 标签的 href、link 标签、表单 action、iframe src 等。这些元素在文档里承担的是“导航”语义,爬虫会按链接规则去解析、去重、排队。

JSON-LD 是一段脚本内容,它的作用是向搜索引擎描述页面实体,比如这是什么页面、属于谁、价格多少。里面的 URL 字段是属性值,不是可点击、可跳转的链接。爬虫读它,是为了理解实体关系,不是为了顺着它去发现新页面。

为什么这个误解很普遍

  • 结构化数据确实会被解析,URL 字段也确实能被读到,于是“能读到”被误当成“会跟进”。
  • 某些结构化数据里的 URL 会影响索引展示,比如面包屑、站内搜索框,这让人以为它同样能带爬虫进入新 URL。
  • 有些页面同时存在 a 标签和 JSON-LD,爬虫跟着 a 标签抓到了目标页,结果被算成 JSON-LD 的功劳。

和普通 a 标签的差别在哪

  1. 语义不同:a 标签表达的是导航关系,结构化数据表达的是属性描述。
  2. 去重与优先级不同:爬虫会把 a 标签收进待抓队列并排优先级,单纯的字符串没有这个待遇。
  3. 可控性不同:a 标签能被 rel 属性、锚文本、所在位置影响,JSON-LD 基本只能被动等待解析。
  4. 容错不同:JSON-LD 一旦语法出错,整段可能被丢弃;a 标签写错顶多这一条没用。

什么情况下结构化数据里的 URL 会被用到

如果这个 URL 本来就是一个可索引的实体地址,比如 canonical、面包屑里的页面地址、图片的 contentUrl,搜索引擎可能会拿它去核对信息、补充展示。但前提通常是:这个 URL 已经通过其他方式被发现,结构化数据只是让描述更准确,而不是负责发现。

把发现渠道和描述渠道分开看:发现靠链接和站点地图,描述靠结构化数据。两者混用,最容易出现“写了却迟迟没被抓”的情况。

更稳妥的做法

  1. 目标链接老老实实写成 a 标签,放在正文里,别只放在脚本里。
  2. JSON-LD 保留,用来补充实体信息,但不要指望它承担发现任务。
  3. 重要 URL 同时进站点地图,减少对单一渠道的依赖。
  4. 入口页数量变多以后,定期抽查抓取日志,看目标 URL 是被哪条路径带进去的。

怎么验证是不是真的被发现了

  • 在服务端日志里搜目标 URL 的路径特征,看有没有搜索蜘蛛的访问记录。
  • 做对比:把 JSON-LD 里的链接挪到 a 标签,观察目标 URL 首次被抓的时间是否变化。
  • 用抓取工具模拟,检查渲染后的 DOM 里有没有真正的链接节点。

最后提醒一句:入口页本身的设计、站点整体质量、抓取预算都会影响跟进速度。把链接写在 JSON-LD 里不会立刻带来什么惩罚,但它也不是一条捷径,指望靠它提升发现效率,多半会失望。