做入口頁时,很多人為了让頁面好看,會把連結做成图片、按钮或者带背景图的方块。视觉上没問题,但對搜尋蜘蛛来说,能不能被识別成一條可跟進的連結,完全是另一回事。
搜尋蜘蛛認的是哪種連結
搜尋蜘蛛解析 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 處理就好,结构尽量保持简單直接。