很多人看日志时会遇到一种情况:某个 URL 明明有蜘蛛来访记录,状态码也是 200,但在搜索引擎里搜标题、搜 URL 都找不到。于是很自然地判断“蜘蛛来过就该收录”,接着开始怀疑是不是被降权。其实抓取和收录是两件独立的事,中间隔着好几道处理环节,任何一道没过,页面都进不了索引。
抓取:蜘蛛只是把内容取回去
抓取的本质是一次 HTTP 请求。蜘蛛拿到 HTML,这一步的任务就算完成了。它并不会在这个环节判断页面好不好、要不要收录,只是把字节带回数据中心排队。所以日志里有访问记录,只能说明这个地址被发现了、能正常访问、返回内容没问题,仅此而已。
从抓取到索引,中间要过几关
渲染
如果页面主要靠 JS 输出内容,返回的原始 HTML 里可能只有骨架。蜘蛛要么排队等渲染,要么先读到一份空壳。渲染资源紧张时,这个队列会拉得很长,表现就是抓了却迟迟没有下文。
主内容提取与解析
引擎需要从 HTML 里判断哪部分是正文,哪部分是导航、广告、评论区。模板占比太大、正文被埋在深层 DOM 里、关键信息直接写在图片上,都会让提取结果变得很差,页面在后续环节自然吃亏。
规范化与去重
同一份内容对应多个 URL 时,引擎要选出一个代表。参数版本、大小写、带斜杠与不带斜杠、http 与 https,如果都返回相同内容又没有 canonical 指向,选谁就由引擎自己决定。落选的那些地址,被抓了也未必单独收录。
质量与价值判断
这一关最难量化。内容是否原创、能否回答某个具体问题、站点整体是否可信,都会影响结果。同一批质量接近的页面里,可能只收一部分;新站和新栏目进入一段观察期,也是常见现象。
抓了却没收录,先排查这几项
- 页面是否被 noindex 或 X-Robots-Tag 标记,这类页面会被抓取,但主动排除在索引之外。
- canonical 是否指向了别的 URL,指向别处等于把收录资格让了出去。
- 返回的 HTML 里有没有真正的正文,用“查看网页源代码”确认,而不是看渲染后的页面效果。
- 该 URL 是否与其他页面高度重复,只是参数或路径不同。
- 页面本身是否存在搜索需求,一个没人会搜的页面,收录了也未必产生价值。
区分“没抓”和“抓了没收”
这两种情况的处理方向完全不同。没抓,问题在发现和可访问性:内链是否指得到、robots 是否挡住、服务器是否稳定、sitemap 是否准确。抓了没收,问题更可能出在渲染、规范化和质量层面。先看日志里的状态码和抓取频率,再看服务端返回的 HTML,最后才讨论内容质量,顺序别反。
抓取解决的是“能不能拿到”,收录解决的是“值不值得放”。前者靠技术,后者靠内容和结构。把两件事混在一起排查,很容易在错误的方向上反复改动。
可以主动做的事
- 保证服务器返回的 HTML 里就带有正文,不要把关键内容全部交给 JS。
- 用 canonical 明确每个内容的代表地址,减少引擎自己猜的空间。
- 让重要页面从首页几跳之内可达,孤岛页面很难被稳定发现。
- 提交 sitemap 并保持准确,它不保证收录,但能减少发现环节的损耗。
- 观察一段时间再下结论,新页面进入索引本来就有延迟。
把抓取和收录拆开看,排查思路会清楚很多:先确认蜘蛛来没来,再确认它拿走的是什么,最后才判断这份内容值不值得被留下来。