搜索抓取

链接写法与 URL 发现:源码里哪些入口真的能被跟随

搜索蜘蛛发现 URL 依赖页面里可跟随的链接,而不少入口在源码层面就已经断了。本文从 a 标签与 href 的写法讲起,梳理脚本绑定点击、前端路由渲染、隐藏内容、表单与 iframe 等常见假链接,并说明 nofollow、页面级限制、分页加载与 Sitemap 兜底的处理思路,最后给出一份上线前的自查顺序。

搜索抓取

链接写法与 URL 发现:源码里哪些入口真的能被跟随

搜索蜘蛛发现 URL,主要靠跟随 HTML 源码里的链接。很多人把注意力放在链接放了多少、放在哪个位置,却忽略了更前置的问题:这些链接在源码里到底是不是一条能被跟随的链接。位置再好,写法不对,等于没有入口。

一条可被跟随的链接长什么样

判断标准其实很朴素:打开页面的查看源代码,在 HTML 里能不能看到一个带 href 的 a 标签,href 的值是不是一个完整的、可解析的地址。

  • a 标签加 href:最可靠的形式,路径可以用绝对地址,也可以用相对地址。
  • href 指向真实页面:不是 javascript:void(0),不是单独的 #,不是空值。
  • 不依赖脚本执行:链接在初始 HTML 里就存在,而不是等前端路由渲染完才出现。

几种常见的假链接

下面这些写法在浏览器里点起来没问题,但对 URL 发现来说是断的。

用脚本绑定点击

把跳转写在 onclick、事件监听或者框架的路由方法里,标签可能是 div、span、button。浏览器能跳,源码里却没有一条可跟随的地址。

整站靠前端路由渲染

单页应用如果只输出一个空容器,首屏链接都要等脚本跑完才有,就等于把所有入口押在渲染结果上。至少应该让关键导航和列表在服务端渲染或预渲染阶段输出。

隐藏与折叠内容里的链接

display:none、高度为零、被弹层遮挡的链接,处理方式并不统一。更稳妥的做法是让重要入口留在正常可见的 DOM 里。

表单、图片与 iframe

POST 表单提交的地址不构成跟随入口;图片链接和 iframe 里的内容即便能被处理,也不如一条普通 a 标签清晰可预期。

rel 属性与页面级限制

链接存在,不等于一定会被跟随。nofollow、sponsored、ugc 这类 rel 值会影响跟随判断;页面头部的 meta robots 或 X-Robots-Tag 也会限制整页链接的处理。核对时要把链接存在和链接可跟随分开看。

发现是抓取的前一步。入口没有暴露出来,后面的抓取、渲染、索引都无从谈起。

分页与加载更多的入口处理

列表页的后续内容如果只能通过按钮触发脚本追加,那么第二页之后的 URL 就没有稳定入口。常见做法是保留一组可跟随的分页链接,脚本加载只作为体验优化;如果确实不想暴露分页地址,也要考虑这些 URL 通过 Sitemap 或其他内链被发现的方式。

内链和 Sitemap 的关系

Sitemap 是补充入口,不是替代品。它适合提交那些内链覆盖不到、层级较深的 URL。反过来,如果一个 URL 只出现在 Sitemap 里、站内没有任何可跟随链接指向它,它被回访的频率通常也不会高。

上线前的自查顺序

  1. 取一个典型页面,禁用 JavaScript 后查看源码,确认导航、面包屑、正文链接是否还在。
  2. 抽查链接的 href 是否为可解析地址,排除 javascript:、占位符和空值。
  3. 检查重要入口是否被 nofollow 或页面级规则挡住。
  4. 确认列表页翻页有可跟随链接,而不是纯脚本追加。
  5. 核对 Sitemap 是否覆盖了内链薄弱但需要被发现的 URL。
  6. 用日志观察这些入口对应的 URL 是否有持续的抓取记录。

这些检查都不复杂,但顺序很重要:先确认链接存在且可跟随,再谈链接放的位置和数量。把这一层做扎实,URL 发现的地基才算立住。