搜索蜘蛛在进入一个站点时,通常会先读取根目录下的robots.txt文件。这个文件相当于站点的访问协议,告诉蜘蛛哪些路径可以抓取,哪些路径需要绕行。不少站点运营者对robots的记忆停留在“Disallow屏蔽后台”这一步,认为只要写了规则就不会出错。但正是这种粗线条的理解,导致了URL发现环节中大量可抓取页面被悄然拦截。
我们曾用蜘蛛池对一个内容站做过一次模拟抓取,目的是检查栏目页和内容页的URL是否都能被搜索引擎的爬虫顺利发现。模拟结果显示,有接近两成的栏目页在长达一个月内从未出现在抓取日志中。逐一排查后,问题最终指向了robots.txt的指令细节——不是规则没写,而是规则与规则之间发生了相互冲突。
allow与disallow的顺序,比想象中更敏感
robots协议中,对于同一路径的匹配,搜索引擎爬虫会优先采纳长度最长的匹配规则;如果匹配长度一致,则按规则出现的先后顺序决定。这意味着,不能简单地认为Allow与Disallow像白名单和黑名单一样泾渭分