常见问题

入口页返回纯文本、JSON 或 PDF 时,搜索蜘蛛还会解析里面的链接吗

入口页不一定非得是标准 HTML,但返回纯文本、JSON 或 PDF 时,搜索蜘蛛对页内链接的处理方式会完全不同。本文说明 Content-Type 对 URL 发现的影响,并给出几种可落地的自查与替代做法,帮你在简化入口页形式时不至于把整条 URL 发现路径断掉。

常见问题

入口页返回纯文本、JSON 或 PDF 时,搜索蜘蛛还会解析里面的链接吗

有些站点做入口页时图省事,会把一批目标 URL 直接以纯文本或 JSON 的形式吐出来,觉得“反正搜索蜘蛛能读到内容就行”。实际上,搜索蜘蛛会不会顺着里面的 URL 继续走,取决于它拿到的响应是不是一个它愿意解析的 HTML 文档。这一点经常被忽略。

搜索蜘蛛拿到响应后,先看的是什么

搜索蜘蛛抓取一个 URL 时,第一步是拿到 HTTP 响应,然后看状态码、Content-Type 以及内容本身。只有当一个响应被判定为可解析的 HTML 页面时,里面的 a 标签链接才会进入它的链接提取流程。如果 Content-Type 明确写着 application/json、text/plain,或者服务端返回的是 PDF、图片,那么即便响应体里明明白白写着 https://example.com/a,也不会被当作页内链接来跟进。

Content-Type 和实际内容不一致会怎样

搜索引擎一般以响应头的 Content-Type 为主,同时也会做一定的内容嗅探。如果服务端把 HTML 错标成 text/plain,链接被解析的概率会大幅下降;反过来,把一段 JSON 标成 text/html,也不代表搜索蜘蛛就会认真提取里面的 URL——它更可能把整段内容当成一堆无意义的文本。两种错法都不划算。

几种常见的非 HTML 响应,分别是什么结果

  • text/plain:会被当成纯文本处理,通常不提取链接。把 URL 列表直接写在响应体里,基本等于只做了一次告知动作,而不是一次页面级的发现。
  • application/json:接口返回的 JSON 会被当作数据文件,除非它同时被用作渲染页面的数据源,否则里面的 URL 不会被跟进。
  • application/pdf:正文中的链接可能被部分识别,但处理方式和 HTML 完全不同,也不稳定,不适合作为入口页的主要形式。
  • XML(sitemap / RSS):这属于另一套机制。sitemap 里的 URL 是集中提交,不是页内链接发现,两者不要混为一谈。
  • 图片、二进制文件:一般只作为资源被抓取,不会从中提取链接。

想让 URL 被发现的几种正经做法

  1. 入口页用标准 HTML 返回,链接放在 a 标签的 href 里,不要只放在 JS 变量或纯文本里。
  2. 确认响应头的 Content-Type 是 text/html; charset=utf-8 之类的正确值,别让编码和类型错位。
  3. 如果确实要用接口吐数据,就让前端拿到数据后渲染成真实链接,并保证渲染后的 DOM 里能出现 a 标签。
  4. 另一条路是走提交渠道,比如 sitemap 或主动推送接口。入口页解决的是“被反复发现”,提交解决的是“被明确告知”,两者互补而不是替代。

怎么自查

用 curl 或浏览器的开发者工具看一下入口页返回的 Content-Type,再用“查看网页源代码”确认链接是不是真的写在 HTML 里。如果源代码里根本看不到链接,只能靠接口拼出来,那就先假设搜索蜘蛛看不到它。

一个简单的判断标准:禁用 JavaScript 后打开入口页,如果页面上看不到任何可点的链接,搜索蜘蛛大概率也看不到。

入口页的形式可以简化,但不能简化到不像一个网页。只要目标 URL 需要被搜索蜘蛛发现,就尽量让它出现在一个正常的 HTML 文档里,其它形式适合作为补充,而不是主力。