常见问题

入口页里的目标链接加了 rel=nofollow,搜索蜘蛛还会去抓吗?

入口页上的目标链接加了 rel=nofollow,搜索蜘蛛到底还跟不跟?本文区分链接级 nofollow、响应头 X-Robots-Tag nofollow 与 robots.txt 三者的不同作用,说明 nofollow 作为提示信号的真实含义,以及对蜘蛛池入口页发现能力的影响,并给出可操作的排查顺序和替代做法。

常见问题

入口页里的目标链接加了 rel=nofollow,搜索蜘蛛还会去抓吗?

先分清 nofollow 出现在哪里

很多人说 nofollow,其实说的是三个位置不同的东西:链接上的 rel=nofollow、页面响应头里的 X-Robots-Tag: nofollow、以及 robots.txt 里对某个路径的 Disallow。这三者的作用范围完全不一样。链接级的 rel=nofollow 只针对那一条链接,不影响同页其他链接;响应头里的 nofollow 针对整页所有链接;robots.txt 则是直接不让抓某个路径。

蜘蛛池入口页遇到的问题,绝大多数是第一种:目标 URL 明明放上去了,但模板里带着 nofollow,或者从别处复制链接时把 nofollow 一起粘了过来,自己却没注意。

加了 nofollow,搜索蜘蛛还会不会抓

早期 nofollow 的含义比较硬,是提示搜索引擎不要跟随这个链接。后来主流搜索引擎把它改成了一种提示信号,意思是它会参考这个信号,但不再保证绝对不抓。也就是说,带 nofollow 的链接被偶尔抓取是有可能发生的,可这既不受你控制,也不代表这条通道有效。

不要把日志里偶尔出现的一次抓取,理解成 nofollow 也能用来做 URL 发现。那次抓取可能来自别处:目标 URL 本身已经在其他页面出现过、sitemap 里有记录、其他站点有外链,或者爬虫只是顺手排进了队列。

更准确的说法是:加 nofollow 不等于百分百不抓,但它明确削弱了这条链接作为发现通道的作用。如果你的目的是让搜索蜘蛛顺着入口页走到目标 URL,那就不该把希望寄托在一条被标了 nofollow 的链接上。

对蜘蛛池入口页意味着什么

入口页的价值在于让爬虫在有限的抓取预算里看到并走向目标 URL。如果整页链接都挂着 nofollow:

  • 入口页对目标 URL 的发现贡献会大幅下降,等于把这条路自己封上了;
  • 爬虫来抓入口页本身不受影响,但进来之后的收益变小,长期看这个入口页的抓取优先级也难提升;
  • 如果问题出在响应头,整页所有链接都受影响,比单条链接加属性更麻烦,而且页面源码里看不出来。

还有一种常见误会:以为 nofollow 能节省抓取预算,让爬虫把时间花在别的地方。在以发现为目的的入口页上,这个逻辑基本不成立——你把链接放上去,本来就是为了让它走。

什么情况下才考虑加 nofollow

nofollow 有它正当的用途,只是和加速发现不是一回事:

  • 页面上有用户生成内容、广告位、赞助或付费链接,这些地方加 nofollow 是常规做法;
  • 某些链接指向与站点主题完全无关、你也不希望权重流过去的位置;
  • 页面里大量重复指向同一目标时,可以只保留一条正常的链接,其余删掉,而不是全部加上 nofollow。

如果目标是让自己站内的 URL 被发现、被抓取,入口页上的目标链接用普通的 a 标签加 href、不加 nofollow,是更符合逻辑的做法。

更实际的排查与做法

  1. 打开入口页源码,搜索 nofollow,确认没有从模板或复制粘贴中带进来的属性。
  2. 检查响应头里有没有 X-Robots-Tag 中的 nofollow,这一项容易被忽略,因为页面源码里看不到。
  3. 目标链接尽量用可抓取的 a 标签和 href,不要靠脚本拼接后再插入。
  4. 想控制抓取节奏,用 robots.txt、抓取频率、入口页数量来调,而不是靠 nofollow。
  5. 用服务器日志确认目标 URL 是被哪一次抓取带出来的,别只看有没有被抓过。

最后提醒一句:nofollow 只是众多信号之一,去掉它也不会让搜索蜘蛛立刻来、立刻抓。它解决的是别自己给自己添堵的问题,而不是保证有效的问题。