做入口页时,很多人为了让页面好看,会把链接做成图片、按钮或者带背景图的方块。视觉上没问题,但对搜索蜘蛛来说,能不能被识别成一条可跟进的链接,完全是另一回事。
搜索蜘蛛认的是哪种链接
搜索蜘蛛解析 HTML 时,主要认的是带 href 属性的 a 标签。其他形式即使看起来像链接,也不一定会被当成出链处理。
- a 标签加 href:能被识别为链接,是最稳的形式;
- img 标签:只当成图片资源,src 是图片地址,不会被当作可跟进的页面链接;
- button 标签:表单控件,本身没有链接属性;
- CSS 里写的 background-image 或 URL:属于样式资源,搜索蜘蛛不会当成链接去跟进。
三种常见做法的实际情况
1. 图片链接
如果结构是 a 里面包着 img,那没问题,a 的 href 依然有效,图片只是链接的显示内容。但如果外层是 div,靠 JavaScript 监听点击再跳转,HTML 里就没有任何可跟进的链接。
2. 按钮样式的链接
把链接做成按钮外观,如果用的是 button 标签或者 div 加 onclick 跳转,搜索蜘蛛一般不执行点击行为。即使搜索引擎具备渲染 JS 的能力,这种链接的发现也不稳定,可能延迟很久,也可能一直不出现。
3. 背景图加透明层
URL 写在 CSS 里,或者用绝对定位的透明层盖住,本质上是给用户看的,不是给爬虫看的,等于没有出链。
要美观又要能被发现,可以这样做
- 用 a 标签做外层容器,href 直接指向目标 URL;
- 在 a 内部放 img 或 span,负责视觉效果;
- 需要按钮样式时,给 a 加 class 做样式,而不是换成 button 标签;
- 确实需要 JS 跳转的,额外保留一个普通的 a 标签作为兜底;
- 链接内容尽量别完全空着,可以在 a 内放一个视觉隐藏的文字,方便判断链接指向哪里。
一个简单的判断方法:在浏览器里临时禁用 JavaScript,如果这时仍然能点开目标链接,说明结构大体是爬虫友好的。
整页都是图片或按钮会怎样
如果入口页通篇没有任何 a 标签,搜索蜘蛛抓到的就是一个没有出链的页面。这种情况下,即使页面被反复访问,里面的目标 URL 也不会因此被发现。反过来,如果页面主体本来就是 a 标签,只是外面套了一层样式,发现效率基本不受影响。
还有一种情况:一个 a 标签里塞了很长的说明文字,链接本身反而被稀释。对搜索蜘蛛来说,文字长短不影响它是否跟进,但会影响它对目标页面的主题判断,所以不建议用大段文字硬凑,也不必堆砌。
怎么验证搜索蜘蛛有没有发现
先看网页源代码,确认目标 URL 是否以 a href 的形式出现在 HTML 中;再结合服务器日志,看这些 URL 有没有被搜索蜘蛛请求过。如果 HTML 里明明有链接,日志里却长期没有对应请求,就要回头排查 robots 规则、链接所在页面的状态码、页面本身的抓取频率等因素,而不是继续在视觉样式上纠结。
小结
图片和按钮本身不产生链接,产生链接的是 a 标签的 href。入口页的目标是把 URL 清楚地交给搜索蜘蛛,视觉表现交给 CSS 处理就好,结构尽量保持简单直接。