搭過池子的人大多遇到過同一個疑問:入口頁上明明放了連結,蜘蛛也确實来了,可目标頁迟迟没有動静。位置這件事经常被当成玄学,其實它更多是抓取顺序和頁面渲染的問题,而不是运气。
蜘蛛打開入口頁之後,先處理什么
蜘蛛拿到一個入口頁,大致會经歷解析 HTML、提取連結、判断是否值得繼續抓取的流程。在這個過程中,連結能不能被看到,取决于几個很實际的條件:
- 連結是否出現在初始 HTML 里,而不是等 JavaScript 执行後才生成;
- 連結是否被 CSS 隐藏,或者藏在需要点击展開的容器中;
- 連結周围有没有可讀的文本,能說明它指向什么;
- 同一個頁面里,這個連結是不是被大量同類連結淹没。
把這几点想清楚,位置的選擇就不难判断了。
三種位置的差別
正文内容区
正文里的連結通常是發現效率最高的一類。原因不复杂:蜘蛛在正文区域停留的時間更長,周围的段落文字也给連結提供了上下文。對入口頁来说,如果目标頁的内容和入口頁主题有一定關联,把連結自然寫進正文,比單獨拉一個連結列表更容易被處理。
要注意的是“自然”這個前提。如果正文只是為了塞連結而堆砌句子,讀起来前言不搭後语,那和纯連結頁没有本质区別。
導航栏
導航的優势是稳定。它出現在全站几乎每個頁面上,位置固定,蜘蛛每次来訪都能看到,适合放少量長期有效的重点目标頁。缺点也明顯:導航連結重复度极高,容易被整体当作模板處理,單獨看某一個導航項的權重並不高。
所以導航更适合承担“入口”的角色,把蜘蛛引到聚合頁或分類頁,再由那些頁面把連結分散出去,而不是把几十個目标頁全塞進導航。
頁脚
頁脚是最容易被用坏的位置。合理的頁脚連結數量有限,比如几個必要的栏目入口或說明頁。一旦變成几十上百條連結的列表,價值會被迅速稀释,而且這種形態本身就和常见的連結堆砌特征很接近,容易让整個入口頁的可信度打折。
如果一定要用頁脚,建议只放少量優先級最高的目标頁,並且和站点自身真實需要的頁脚信息混在一起,而不是單獨辟出一块“友情連結式”区域。
同一個目标頁出現几次合适
同一頁面對同一目标頁多次連結,第二次之後基本不會带来額外帮助,搜尋引擎通常會對重复連結做合並處理。真正值得花心思的不是次數,而是這一處連結放在哪里、周围的文字说了什么。
如果确實需要在一頁里出現两次,比較合理的做法是放在两個语义不同的位置,比如正文里提一次、相關推荐里再提一次,而不是相邻两行各放一條。
几個容易忽略的细节
- 折叠與隐藏:用 display:none 藏起来的連結,或者依赖用戶点击才渲染出来的列表,處理结果並不稳定,能用普通可见方式就別绕弯。
- JS 渲染:如果連結完全靠前端脚本生成,蜘蛛需要額外执行脚本才能看到,發現效率會下降甚至失敗。入口頁尽量用服務端直出的 HTML。
- 連結文字:“点击這里”“更多”這類文字不提供任何信息,換成一個能描述目标頁主题的短语會更有用。
- 首屏與下方:連結全部挤在頁面最底部,而首屏只有大段無關内容,容易让蜘蛛在首屏就判断這一頁没什么可抓的。
一套可以照着做的排布方式
- 入口頁首屏给出一段能說明本頁主题的短文字,不要只放一個連結列表;
- 正文区域放置與主题相關的目标頁連結,每條連結配一句简短的說明;
- 導航只保留少量長期有效的入口,把流量分散到分類頁;
- 頁脚控制在几條以内,不單獨開辟連結堆砌区;
- 定期检查連結是否還在初始 HTML 中,尤其是改版或換模板之後。
連結位置能改善的是“被發現的效率”,它解决不了目标頁自身的問题。如果目标頁内容單薄、狀態碼異常、被 robots 或防火墙拦掉,換再多位置也無济于事。排布方式只是把门打開,進门之後能不能留下,還得看頁面本身。