搜索抓取

蜘蛛找不到的页面:孤岛 URL 是怎么形成的

孤岛页面是指服务器上真实存在、站内却没有任何可达入口的 URL。蜘蛛只能靠链接和 Sitemap 发现地址,入口一旦断掉,页面就长期停在未被抓取的状态。本文梳理孤岛 URL 的常见来源,说明如何用抓取日志确认是否真的没被抓,以及通过内链、Sitemap 与提交接口把地址重新送回抓取队列的具体做法。

搜索抓取

蜘蛛找不到的页面:孤岛 URL 是怎么形成的

有些页面在服务器上好好的,你直接输入地址能打开,但从首页一路点过去永远到不了它,也没有任何外链指向它,Sitemap 里可能还漏了。这类页面在抓取层面接近“孤岛”:蜘蛛认识你的站点,却不知道这个地址的存在。

孤岛 URL 常见的几种来源

  • 只有站外链接指向:早期靠一篇外链被发现,外链删掉或失效后,站内又没补上入口,路径就断了。
  • 入口写在脚本里:链接由 JS 拼接或依赖点击、悬停才生成,蜘蛛在渲染之前看不到这个地址。
  • 分页太深:列表页翻到第三十页之后没有稳定入口,越靠后的详情页越难被走到。
  • 站内链接被整体屏蔽:指向它的内链全部带 nofollow,或者该目录被 robots.txt 挡住,Sitemap 里却还列着。
  • 参数组合页:筛选、排序生成的地址每次都不一样,入口只存在于某次点击的结果里。
  • 改版留下的旧地址:入口删了,301 也没做,页面还在,但已经没有任何地方能走到它。

先确认是不是真的没被抓

不要凭感觉判断。用完整的 URL 去匹配服务器日志,看有没有对应的请求记录、状态码是多少、返回字节数是否正常。如果日志里出现过,只是次数极少,那问题不在“发现”,而在抓取优先级;如果从头到尾一次都没出现,才更可能是入口问题。

站内的收录查询只能当参考,结果不完整也不实时,不能作为唯一依据。尤其要注意区分:有些地址是蜘蛛请求了原始 HTML 但没执行脚本,页面上真正的内容和链接都没被看到。

把 URL 重新送回抓取队列

  1. 加一条正文内链。从与它主题最接近、且已经被抓取的页面里,用一段自然文字链过去,锚文本写清楚这页讲什么,不要用“点击这里”。
  2. 进 Sitemap。只放你确实希望被收录的地址,别把筛选页、重复页一起塞进去。
  3. 给一个栏目级入口。让它出现在某个稳定栏目或聚合页里,路径不依赖临时活动或一次性专题。
  4. 检查拦截面。robots.txt、页面里的 meta robots、HTTP 头里的 X-Robots-Tag,三处都要过一遍,确认没有误伤。
  5. 补提交。通过搜索资源平台提供的提交方式把地址补进去,但它只是提示,替代不了真实入口。

内链结构上要守住的三件事

  • 每个想被收录的页面,至少有一条从首页出发、可点击到达的路径。
  • 链接放在 HTML 里,不依赖交互或异步请求才出现。
  • 层级别太深,重要页面多给几个入口,别只挂在一个角落。

修完之后观察什么

重点看抓取日志里这个地址有没有重新出现、出现频次如何、抓取时返回的状态码和内容是否正常。变化不会立刻发生,一次改完就让它稳定几周,期间不要反复调整入口位置,否则很难判断是哪一步起了作用。

孤岛页面很少是靠提交解决的,真正决定它能不能被发现的,还是站内那条通往它的链接。