蜘蛛池跑起来之后,最常见的问题是:知道该看日志,但不知道该看哪几个数。很多人盯着爬虫请求量的曲线,涨了就安心,跌了就加资源。这个做法的问题在于,请求量只是最上游的过程数据,它和目标页面是否能被有效处理之间,还隔着好几层。
先把指标分三类
为了避免自己骗自己,可以先把所有能观察到的数据分成三类:
- 过程指标:爬虫请求数、独立 IP 与 UA 分布、状态码分布、入口页命中率、平均响应时间。
- 结果指标:目标页面是否被请求过、请求深度、是否进入索引、索引后的展现与点击变化。
- 成本指标:服务器与带宽开销、入口页维护人力、被误伤或降权的风险。
只有把三类放在一起看,才可能得出值不值得继续的结论。单看任何一类都会偏。
过程指标里容易看错的地方
请求总数的涨幅不代表覆盖面
请求数从一万涨到三万,可能是同一批蜘蛛在反复抓同一批入口页,而不是覆盖到了新的 URL。这时候要看的是被请求过的不同 URL 数量,而不是请求条数。前者才接近「发现」这个动作。
UA 要按 IP 段和反向解析复核
日志里 UA 写着各大搜索引擎的名字,不代表真的是它们。至少要做一次反查抽样,把明显伪装的部分从统计里剔掉,否则过程数据会被大量虚假请求稀释,看起来热闹,实际没有价值。
状态码分布比平均值更有信息量
平均响应 200 毫秒听起来不错,但如果其中 15% 是 503 或超时,蜘蛛实际体验到的是另一回事。抓取日志里按状态码分桶,比算一个平均数更有用。
结果指标才是判断依据
过程指标回答的是「蜘蛛来过没有」,结果指标回答的是「来过之后发生了什么」。需要重点跟的是:
- 目标页面第一次被请求的时间,相对于入口页被请求的时间差多少。
- 目标页面被抓取的频率,是否有第二次、第三次。
- 目标页面出现在索引中的时间与数量,注意区分「被索引」和「能被搜到」。
如果入口页抓取很热闹,但目标页面的首次抓取迟迟不来,问题通常不在蜘蛛数量,而在链接路径、入口页与目标页的关联强度,或者入口页本身质量不足。
三种常见的误判
把抓取量当成收录量
抓取只是访问,是否收录由目标页面自身的质量、重复度、站点整体状况决定。蜘蛛池能改善的是发现和抓取机会,不能替页面通过质量判断。
把收录速度当成收录质量
有些页面很快进索引,但随后又被移出,或者长期停留在「已抓取未索引」。这种情况下速度没有意义,反而说明页面在某一关被卡住了。
把短期波动当成趋势
蜘蛛抓取本来就有波动,一天两天的涨跌说明不了什么。要用同一批入口页、同一套统计口径,至少按周对比,才有可比性。
建立一份能前后对比的记录
建议至少记录这几列,并且固定统计口径:
- 日期、入口页被请求次数、去重后的 URL 数、状态码分布。
- 目标页面首次被抓取日期、累计抓取次数、当前索引状态。
- 当期投入:资源、时间、维护动作,以及哪些动作是在哪一天做的。
关键是动作要记日期。否则看到曲线变化时,无法判断是哪次调整带来的,也无法判断下次该继续还是回退。
什么时候该调整,什么时候该停
比较务实的判断方式:如果连续两到三周,入口页抓取正常,但目标页面的首次抓取没有新增,说明链路环节有问题,应先排查入口页与目标页的关联方式,而不是继续加量。如果抓取和目标页覆盖都在缓慢增长,但站点自身的收录没有变化,要回到页面质量与站点整体评估上找原因,这可能已经超出蜘蛛池能解决的范围。
蜘蛛池能改变的是被发现的概率和被抓取的机会,改变不了页面本身值得不值得收录。把指标分清楚,才不会用加量的方式去解决一个不属于量的问题。