搭过池子的人大多遇到过同一个疑问:入口页上明明放了链接,蜘蛛也确实来了,可目标页迟迟没有动静。位置这件事经常被当成玄学,其实它更多是抓取顺序和页面渲染的问题,而不是运气。
蜘蛛打开入口页之后,先处理什么
蜘蛛拿到一个入口页,大致会经历解析 HTML、提取链接、判断是否值得继续抓取的流程。在这个过程中,链接能不能被看到,取决于几个很实际的条件:
- 链接是否出现在初始 HTML 里,而不是等 JavaScript 执行后才生成;
- 链接是否被 CSS 隐藏,或者藏在需要点击展开的容器中;
- 链接周围有没有可读的文本,能说明它指向什么;
- 同一个页面里,这个链接是不是被大量同类链接淹没。
把这几点想清楚,位置的选择就不难判断了。
三种位置的差别
正文内容区
正文里的链接通常是发现效率最高的一类。原因不复杂:蜘蛛在正文区域停留的时间更长,周围的段落文字也给链接提供了上下文。对入口页来说,如果目标页的内容和入口页主题有一定关联,把链接自然写进正文,比单独拉一个链接列表更容易被处理。
要注意的是“自然”这个前提。如果正文只是为了塞链接而堆砌句子,读起来前言不搭后语,那和纯链接页没有本质区别。
导航栏
导航的优势是稳定。它出现在全站几乎每个页面上,位置固定,蜘蛛每次来访都能看到,适合放少量长期有效的重点目标页。缺点也明显:导航链接重复度极高,容易被整体当作模板处理,单独看某一个导航项的权重并不高。
所以导航更适合承担“入口”的角色,把蜘蛛引到聚合页或分类页,再由那些页面把链接分散出去,而不是把几十个目标页全塞进导航。
页脚
页脚是最容易被用坏的位置。合理的页脚链接数量有限,比如几个必要的栏目入口或说明页。一旦变成几十上百条链接的列表,价值会被迅速稀释,而且这种形态本身就和常见的链接堆砌特征很接近,容易让整个入口页的可信度打折。
如果一定要用页脚,建议只放少量优先级最高的目标页,并且和站点自身真实需要的页脚信息混在一起,而不是单独辟出一块“友情链接式”区域。
同一个目标页出现几次合适
同一页面对同一目标页多次链接,第二次之后基本不会带来额外帮助,搜索引擎通常会对重复链接做合并处理。真正值得花心思的不是次数,而是这一处链接放在哪里、周围的文字说了什么。
如果确实需要在一页里出现两次,比较合理的做法是放在两个语义不同的位置,比如正文里提一次、相关推荐里再提一次,而不是相邻两行各放一条。
几个容易忽略的细节
- 折叠与隐藏:用 display:none 藏起来的链接,或者依赖用户点击才渲染出来的列表,处理结果并不稳定,能用普通可见方式就别绕弯。
- JS 渲染:如果链接完全靠前端脚本生成,蜘蛛需要额外执行脚本才能看到,发现效率会下降甚至失败。入口页尽量用服务端直出的 HTML。
- 链接文字:“点击这里”“更多”这类文字不提供任何信息,换成一个能描述目标页主题的短语会更有用。
- 首屏与下方:链接全部挤在页面最底部,而首屏只有大段无关内容,容易让蜘蛛在首屏就判断这一页没什么可抓的。
一套可以照着做的排布方式
- 入口页首屏给出一段能说明本页主题的短文字,不要只放一个链接列表;
- 正文区域放置与主题相关的目标页链接,每条链接配一句简短的说明;
- 导航只保留少量长期有效的入口,把流量分散到分类页;
- 页脚控制在几条以内,不单独开辟链接堆砌区;
- 定期检查链接是否还在初始 HTML 中,尤其是改版或换模板之后。
链接位置能改善的是“被发现的效率”,它解决不了目标页自身的问题。如果目标页内容单薄、状态码异常、被 robots 或防火墙拦掉,换再多位置也无济于事。排布方式只是把门打开,进门之后能不能留下,还得看页面本身。