核对抓取限制,最直接的做法是同时检查两处:一是站点根目录的robots.txt是否屏蔽了目标路径,二是目标页面返回给搜索引擎抓取程序的HTTP状态码和页面内容是否正常。只改其中一处,往往无法解释“为什么没有被抓取”,因为两者是独立生效的限制来源。时间有限时,先查这两项,再决定是否深入日志。
抓取限制通常来自三层,排查顺序应当从外到内:
判断方法:如果robots.txt明确屏蔽,抓取程序通常不会请求该URL;如果robots.txt放行但日志里没有请求记录,问题更可能在服务层或链接发现环节;如果日志有请求但状态异常,则重点看服务层和页面层。
第一步,打开站点根目录下的robots.txt,确认它返回200而不是404或跳转。第二步,找到与你关注的抓取程序对应的User-agent段落,以及适用于所有抓取程序的User-agent: *段落。第三步,逐条比对Disallow路径与目标URL的前缀是否匹配。注意Disallow: /会屏蔽整站,Disallow:留空则表示不限制。
这里有一个容易误判的点:robots.txt中的规则是前缀匹配,不是通配全站。例如Disallow: /search会同时屏蔽/search和/searching。如果你只想屏蔽一个目录,写法要精确到目录层级。修改后,用搜索引擎官方提供的robots.txt测试工具或抓取测试功能验证,不要只靠肉眼判断。
robots.txt只是“声明”,日志才反映“实际”。在服务器访问日志中筛选目标抓取程序的User-agent,看它是否请求过目标URL、请求频率如何、返回状态是什么。判断结果可以这样读:
如果无法直接读日志,可以用搜索平台的抓取统计或网址检查工具发起一次实时抓取,观察返回的状态和抓取到的HTML。这类工具显示的是该平台抓取程序的视角,不能代表所有抓取程序。
按代价从低到高排:先查robots.txt,几分钟内可完成,且改动风险低;再查目标URL的状态码和页面正文,用curl -I或浏览器开发者工具即可;最后才查服务器日志和CDN规则,这一步通常需要运维配合,耗时最长。
选择依据是:如果robots.txt已经屏蔽,后面的日志排查基本可以跳过;如果robots.txt放行且状态码正常,但抓取量仍然很低,才需要转向链接发现、站点结构和内容质量。一次改动前后做比较时,要留意搜索需求本身的季节性波动和数据采集延迟,不要用短期波动直接归因于某次修改。
下一步:打开你站点的robots.txt,把当前生效的Disallow规则逐条抄下来,与你想被抓取的URL前缀对照一遍,标出任何可能误伤的规则,再决定是否修改。