遇到目标 URL 一直不出现在结果里,很多人的第一反应是加大蜘蛛池入口页数量,或者反复提交地址。但如果连搜索蜘蛛的抓取记录都没有,加量往往只是把同一个问题放大。更省时间的做法是先定位断点:断在入口页这一环,还是断在目标站这一环。
先把发现和抓取拆成两步看
搜索蜘蛛处理一条链接大致要过两道关:先在某个页面上读到这个 URL,也就是发现;再把它排进队列并发出请求,也就是抓取。两步之间可能隔几分钟,也可能隔几天,甚至一直不执行。所以先确定卡在哪一步:
- 入口页本身没被访问过,问题在入口页的可发现性;
- 入口页被抓了,但日志里始终没有目标 URL 的请求,链接可能没被正确解析,或者排队极慢;
- 目标 URL 被请求过但返回异常,问题在目标站服务端。
这三条对应完全不同的处理方向,混在一起查很容易做无用功。
建议的排查顺序
- 先看入口页是否被抓。入口页都没被访问,目标 URL 自然无从谈起。此时优先确认入口页能否正常打开、是否被 robots 拦截、有没有其他页面链接指向它。
- 再看链接是否可解析。入口页被抓却没带出目标链接,常见原因是链接藏在需要执行脚本才生成的位置,或者被属性屏蔽。
- 最后查目标站。确认蜘蛛确实请求过目标 URL 之后,再去看状态码、响应时间、robots.txt 和页面上的 noindex。
把「没收录」当成一个笼统的问题,很难找到答案;拆成没发现、没抓取、抓了没收三段,往往几分钟就能定下方向。
入口页这一侧值得检查的点
- 入口页是否稳定返回正常状态码,而不是跳转链或空白页;
- 目标链接是否写在 HTML 源码里,而不是只存在于脚本渲染之后;
- 链接是否带上了 nofollow 之类阻止跟进的属性;
- 入口页自身有没有内链或外链指向,避免变成孤岛页;
- 入口页链接数量是否过多、体积是否过大,导致靠后的链接被忽略。
目标站这一侧值得检查的点
- 目标 URL 是否返回 200,有没有频繁超时;
- 页面 head 中是否存在 noindex,robots.txt 是否屏蔽了抓取;
- 该地址是否与站内其他页面高度重复,被 canonical 指向别处;
- 服务器是否对陌生 UA 或高频请求做了拦截;
- 同一域名下是否已有大量低质页面,影响整站的抓取分配。
两个常见的误判
第一,把入口页数量当成万能药。目标站本身有阻断时,入口页再多也只是让搜索蜘蛛反复撞墙,还可能拉低对方对整批链接的信任度。
第二,只凭提交成功就判断没问题。URL 提交只是把地址告诉搜索引擎,是否抓取、何时抓取由对方决定,提交成功和被抓取是两回事。
处理节奏上的一点建议
排查之后先做最小改动:修掉一条明确的阻断,比如去掉 noindex、恢复 200 状态,然后观察一段时间日志。尽量不要在同一时间点同时改入口页结构、换域名、调服务器策略,否则即便情况好转,也说不清是哪一步起了作用。抓取和收录本身就是慢过程,稳妥排查比频繁试错更省成本。