做蜘蛛池的人经常遇到这种情况:入口页的访问量看着有,目标 URL 却一直没有抓取记录。这时候多数人会马上去换链接位置、改锚文本,其实更划算的做法是先翻服务器日志。工具面板给的是结果,日志给的才是过程。
入口页被抓和目标 URL 被抓,是两件事。日志能把这两件事拆开,让你知道卡在哪一步。
先确认入口页到底被抓了几次、怎么抓的
不要只看“有没有来过”。至少要同时看这一组字段:访问时间、User-Agent、请求方法、状态码、响应字节数、Referer。任何一个字段异常,后面的判断都会跑偏。
- User-Agent:区分是搜索蜘蛛、第三方爬虫还是监测工具。不同 UA 的行为差别很大,混在一起看容易误判。
- 请求方法:HEAD 请求不会解析页面内容,这种情况没提取到链接属于正常,别当成异常。
- 状态码:200 之外,304、301、403、429、5xx 都要单独拎出来看。429 和 503 尤其要留意,它反映的是抓取压力,而不是链接问题。
- 响应字节数:如果明显小于该页正常体积,可能是内容被截断、返回了错误页,或者中间层替换了 HTML。
- Referer:能帮你还原蜘蛛是从哪条路径过来的,判断它在站点内部是怎么走的。
判断蜘蛛有没有真正“读到”链接
抓到了页面,不等于读到了链接。可以按这个顺序看:
- 同一个 UA 对入口页的抓取次数,是偶发一次还是持续回访。
- 响应字节数是否和正常渲染后的体积接近。差得太多,说明拿到的可能是空壳页。
- 是否伴随请求了页面里的 CSS、JS 等资源。如果完全没有任何资源请求,说明它没有走完渲染流程。
- 紧接着有没有对页面内其他链接的请求。如果连站内普通链接都没被跟进,那问题在页面本身,不在目标 URL。
再去目标站的日志里找证据
很多人只盯入口页日志,忘了目标站也有一份。把目标站日志按搜索蜘蛛的 UA 过滤,看有没有对应路径的请求。有请求但状态码异常,是另一类问题;完全没有请求,才说明发现环节没走通。两边的日志时间对齐之后,因果关系会清楚很多。
几种常见误判
- 把监测工具、SEO 插件的访问当成搜索蜘蛛,结果以为抓取很频繁。
- 只看总访问量,不看单条记录的返回状态,漏掉了 5xx 和超时。
- 用压缩后的传输字节数和正常体积对比,得出“页面被截断”的错误结论。
- 入口页刚上线几小时就下结论,忽略了抓取本身就有先后顺序和排队。
排查完之后的调整思路
- 如果入口页状态码长期异常,先修入口页,别急着换目标 URL。
- 如果入口页一切正常但站内链接也没被跟进,优先检查页面是否依赖客户端渲染、是否有大面积屏蔽规则。
- 如果入口页和目标站都正常,只是目标 URL 没动静,可以适当增加入口页的稳定性和内容厚度,让它值得被回访。
- 调整之后留出观察周期再评估,不要一天之内反复改动。
日志能告诉你“发生了什么”,但不能保证“接下来一定会被抓”。把入口页做稳定、做真实、做可读,是唯一可控的部分。