先说结论:抓取入口页不等于发现了链接
很多运营者看到服务器日志里出现了搜索蜘蛛访问入口页的记录,就默认页面里的目标 URL 已经被“发现”了。实际上日志只记录了请求这一件事:爬虫来了、拿走了 HTML,仅此而已。页面里的链接是否被提取、是否被排进待抓取队列、什么时候真的去抓,这几件事都不在服务器日志里。
所以判断入口页有没有起作用,不能只看“入口页被抓了没有”,而要看目标 URL 有没有在合理时间内被同一个爬虫请求。
日志里能直接看到的三种记录
- 入口页的请求:说明抓取动作发生过,是判断的前提。
- 目标 URL 的请求:说明链接被发现并完成了后续抓取,这是最有价值的信号。
- 静态资源请求:图片、CSS、JS 等,能反映爬虫是只抓 HTML 还是会拉取渲染所需资源。
除此之外,链接提取、去重、入队这些过程都发生在搜索引擎内部,外部看不到。
目标 URL 出现时的几个观察点
- 时间差:入口页被抓到目标 URL 被抓之间隔了多久。几分钟到几天都算正常,隔了几周基本可以认为这条路径没起效。
- UA 一致性:确认是同一个来源的爬虫,而不是其他渠道带来的抓取。
- 请求顺序:如果入口页和目标 URL 在很短时间内被连续请求,多半是从入口页跟过去的;如果时间点完全分散,就要考虑其他来源。
- referer 字段:部分爬虫会带 referer,可以作为辅助参考,但不能当作唯一依据,因为很多请求并不带。
几个容易误判的情况
- 只看了 CDN 或反向代理日志:边缘日志和回源日志对不上时,容易把命中缓存的请求当成没被抓。
- 日志保留时间太短:只留 3 天日志,而抓取间隔本来就超过一周,自然会觉得“一直没来”。
- 目标站和入口页不在同一台服务器:入口页日志里永远看不到目标 URL 的请求,需要去目标站的日志里查。
- 页面依赖 JS 渲染:抓取 HTML 时看不到链接,需要等渲染队列,时间差会被明显拉长。
- 链接被 robots、nofollow 或响应头挡住:日志里既看不到入口页异常,也看不到目标 URL,需要回头检查这些限制条件。
做一个最小对照测试
- 新建一个入口页,只放少量链接,避免链接之间互相干扰。
- 记录入口页被抓取的具体时间点,作为观察起点。
- 在目标站日志里按爬虫 UA 和这个时间点之后的时间窗口过滤。
- 持续观察 7 到 14 天,记录目标 URL 是否出现、出现的频率如何。
- 如果始终没有出现,按 robots、nofollow、JS、跳转方式、响应状态码的顺序逐个排查,而不是继续增加链接数量。
这个测试的价值在于把“感觉没效果”变成“到底哪一步断了”,避免盲目扩大入口页规模。
看到信号之后该做什么
目标 URL 有被抓取记录,说明入口页这条路径是通的,接下来要关注的是抓取是否稳定、目标页是否被正常处理。如果目标 URL 被抓了但状态码是 4xx、5xx,或者被跳转到别处,问题就不在入口页,而在目标站本身。反过来,如果目标 URL 完全没有被抓取记录,继续堆入口页和链接数量,通常也不会改善情况。
入口页只是让 URL 多一个被发现的入口,能不能被发现、多久被发现,最终仍由搜索引擎决定,没有任何做法可以保证收录,也无法保证抓取频次。