搜索结果页是站点之间竞争用户的战场,要想在竞争中获胜,首先你得站到战场上去。根据之前说到的搜索引擎的原理,我们知道,要在搜索结果页中出现,首先生产的页面要被搜索引擎的蜘蛛抓取。蜘蛛发现网页,正常情况下是通过站内的链接,和站外的链接,按照广度优先的原则,提取页面中导出的URL。一般来说,站长还可以通过提交Sitemap,Ping通知蜘蛛,手动提交等方式,帮助蜘蛛发现有效的URL。
前面说到,通过链接抓取网页,按照广度优先的原则。一般的小站,搜索引擎从起点页抓取三四层的深度也就不错了,一般这个起点页都是网站首页。所以SEO要将网站整体设计成扁平的结构,有些时候需要为蜘蛛搭一些梯子,帮助它在较短路径上接触到更多的URL。举个例子,
一般情况下,一个页面内导出链接不能过多,超过某个值蜘蛛就不抓了。之前的经验是100,但是这个数值还是跟网站和具体页面有关。在网站层级和单页导出链接总量两个约束条件下,还有一点文章可做,那就是时间。单个页面导出链接最多是100,如果我每天换掉其中的50个呢? 一个最简单的实现方式是借助于缓存机制,固定的取50个,另外再在全集中随机取50个,这50个设置缓存时间1天,1天后失效,再随机取50个,这样可以最大化导出链接的时效性,就像广告的分时段轮播一样。这里的数字可以根据实效进行调整。站内如此,对于批量交换的外链,也可以按照类似的方式实现。
对于移动页面,有两种主要的机制通知到蜘蛛PC页与移动页的对应关系,一是在PC页头部加上mobile-agent的meta属性,二是在站长工具提交PC/移动页对应关系的正则(也可以提交全量的URL地址对)。
抓取这个环节至关重要,站长平台的抓取频次,和通过accesslog分析得到的抓取明细,都需要时刻监控。小站的log文件,市面上有些一些日志分析工具,自己写也OK。对于大站的log,很多都存储于hadoop这样的分布式存储上,一般需要定制程序去分析处理。为了即时分析处理,快速反馈,可能需要接入流式计算框架(kafka+storm)。
对于蜘蛛抓取行为数据的使用,可以用来评估蜘蛛对于站内页面价值的评定,可以用来反馈辅助抓取所做的一些优化的效果,可以预估新生成页面被搜索引擎接受的程度,等等。没有使用价值的数据是没用的,数据跟具体的应用场景结合起来,才能体现其价值。
对于抓取的页面,蜘蛛建立倒排索引后,会进行价值判定,按照价值高低,存储在分级索引库中。高级别的索引库才会参与最终的搜索排序。
前段时间,圈子里流出了百度的一个搜索参数,tn=json,以seo这个词为例,查询百度搜索前50条结果,查询URL为,
http://www.baidu.com/s?wd=seo&pn=0&rn=50&tn=json
对于有程序基础的同学们,json格式比网页更易于处理。
这个方法只适用于PC端,对于移动端的收录情况的判断,还是要老老实实的拼接搜索地址URL,解析相应结果文档。
一般SEO开始学的时候,都会接触到site语法,基本上所有常见的搜索引擎也都支持site语法去查询域名或者目录级的收录量查询。在site查询语句的后面加上一个词,可以查询得到该域名与这个词相关的页面。比较有价值的是,site语法查出来的结果,按照网页的价值倒序排列。这个特征便使得依据相关性内链,提升第二页/第三页落地页的排名成为可能。