做蜘蛛池或入口页运营时,经常会遇到一种情况:抓取日志里明明能看到搜索蜘蛛访问了入口页,甚至也抓了目标 URL,但过一段时间去查,目标页还是没有被收录。这时候容易把原因归到“蜘蛛池没用”或者“入口页权重不够”上,但更常见的其实是链路上某一环断了。抓取、解析、入库、索引评估是几件不同的事,任何一步卡住,结果都会表现为“不收录”。
先把“抓了”和“收录了”拆成四个阶段
1. 入口页被抓,链接被发现
搜索蜘蛛抓了入口页,只代表页面内容被拿走了,不代表里面的每一条链接都会被处理。如果链接藏在需要执行脚本、需要点击或需要额外请求才能拿到的地方,很可能在解析阶段就被跳过。这一步要确认的是:入口页返回的状态码正常、正文里确实存在可解析的 a 标签,并且链接不是被 nofollow、robots 或页面级限制挡住的。
2. 目标 URL 真的被抓取
日志里出现目标 URL,要看清楚是哪一种请求。有些记录是预检、有些是带参数的版本、有些是渲染资源的请求,它们和真正抓取页面正文并不是一回事。理想情况下,你希望看到的是对目标地址本身的 GET 请求,返回 200,并且响应体是完整的 HTML,而不是跳转链、验证码页或空壳页面。
3. 抓取之后还要解析和去重
页面被成功抓取,内容也不一定能进入下一步。如果目标页与站内已有页面高度相似,或者正文被模板、广告、内链淹没了主体,就可能被判为重复或低价值。此外,如果页面主体内容依赖前端渲染,而抓取时拿到的是空白容器,同样会被当作无内容处理。
4. 进入索引候选后还有一轮评估
这一步对站长来说几乎是黑盒。页面能不能最终出现在结果里,还取决于站点整体质量、内容新鲜度、链接结构、访问稳定性等多种因素。你能做的是把前面三步的硬伤排掉,让页面至少处于“可被正常处理”的状态,而不是反复提交同一条 URL 期待结果变化。
用日志确认断点,别靠猜
排查时最容易犯的错,是只看“有没有蜘蛛来过”,不看具体请求。建议按下面这些点逐条核对:
- 入口页日志里,搜索蜘蛛的请求是否返回 200,是否只抓了一部分就离开。
- 目标 URL 是否出现在日志里,返回状态码是多少,响应大小是否合理。
- 抓取目标 URL 时用的 UA、IP 段是否和正常搜索蜘蛛一致,避免把其他爬虫误认成搜索蜘蛛。
- 同一目标 URL 是否被反复抓取但从未稳定返回内容,比如时好时坏、间歇性 5xx。
- 目标页是否设置了会影响索引的响应头或页面级指令。
- 入口页更新后,蜘蛛抓到的版本是不是仍是缓存中的旧版本。
几种最常见的断点位置
- 链接根本没被发现。链接只存在于脚本里、表单里或需要交互才出现,解析阶段拿不到。
- 链接被发现了但没被跟进。页面级限制、nofollow、跳转链过长,都可能让蜘蛛在入口页停住。
- 目标 URL 抓取失败。超时、限速、返回 403 或 5xx,蜘蛛来过但没拿到内容。
- 抓到了却没内容。正文由前端渲染,抓取端拿到的只是空模板。
- 内容被判重复。目标页与站内其他页高度雷同,或正文被大量无关模块稀释。
排查顺序建议
先看入口页能不能被正常抓取,再看链接能不能被解析出来,然后看目标 URL 的响应是否稳定,最后才去考虑内容层面的问题。顺序反过来,很容易在内容上反复调整,却忽略了一个 503 或一次超时。对于同一个入口页,不建议短时间内反复改动结构和链接,改动太频繁会让抓取结果难以对照。
如果确认前面几环都正常,而页面长期没有进入索引,可以考虑换一条入口路径、换一个时间点观察,或者检查目标页本身是否值得被单独收录。收录与否最终由搜索引擎决定,入口页能做的只是把发现的路径铺好、把抓取的门槛降下来,而不是保证结果。
把“蜘蛛来过”当成“已经收录”,是排查里最常见的误判。先确认请求是否成功、内容是否可解析,再去讨论收录,效率会高很多。