SEO相关概念及用途
爬行,抓取,索引,收录
爬行是指蜘蛛在页面上沿着链接发现新页面,然后“爬”过去抓取新页面。抓取是指蜘蛛发现新页面后,像浏览器一样打开页面,把页面HTML代码存入数据库。两个概念在英文中通常都是用crawl或spider(这里是动词)表示,视上下文才能分出是指哪个。
显然,爬行和抓取是相互交织的。抓取是实际发生的我们能够观察到的过程,在原始日志中,蜘蛛的抓取是有完整记录的,比如:抓取确切时间、状态码、抓取的文件是哪个、抓取了多大文件等等。蜘蛛对页面的抓取就和浏览器读取文件是完全一样的。
而爬行只是一个形象的比喻,实际上并不存在蜘蛛抓取文件时发现链接然后立即跟踪过去这样一个过程。蜘蛛抓取文件后存入数据库,程序解析出文件中的链接后将URL存入页面地址库,然后蜘蛛从地址库中按一定规则选取URL进行抓取。蜘蛛不是真的访问页面时看到一个URL就爬过去。
索引指的是将一个URL的信息进行各种整理,如去重、分词等等,然后将关于这个URL的信息存入数据库,被称为索引库。真正用于搜索的是倒排索引,以后有机会再细说。要注意的是,索引库中关于URL的信息不仅是组成页面内容的关键词及其特征(位置、格式等),还有链接、更新情况等信息。英文索引这个词是index。
收录是SEO们最关心也最常用的词,其实也是4个概念中最不明确的。被收录指的是我们能查到页面被搜索引擎存入了索引库。但后面我们会看到,进入索引库的URL并不一定被抓取过,这和SEO们的直觉可能是不一样的。
当然,精准掌握概念不是为了咬文嚼字,而是对很多SEO问题的理解和处理有影响。下面举几个例子。
收录不全是什么原因?
页面不收录是SEO们最头疼的问题之一,不收录就谈不上排名、流量了。太多人在博客、论坛里问页面不被收录是什么原因,也给出了域名,但这种问题是没法回答的,即使愿意花时间去诊断也不能回答(除非列出所有可能的原因,等于没回答),因为缺了一个关键信息:页面被抓取了没有?这只有查原始日志才能知道,看网站是看不出来的,查流量也是查不出来的。了解前面的概念就知道,被抓取不一定被收录,没被收录也不一定意味着没被抓取。
如果页面被抓取过却没被索引和收录,应该往内容是否有问题(原创?采集?所谓伪原创?敏感内容或产品?复制内容?)方向去找原因。网站结构应该没有大问题,搜索引擎是看了内容之后觉得不适合收录的。如果页面压根就没被抓取过,则应该往网站和链接结构、搜索引擎不友好的技术障碍、域名权重等方面去找。
索引了,但一定抓取了吗?
使用site:指令或直接搜索URL都可以检查URL是否被索引,能查到URL却不一定说明页面被抓取了。经常有人问搜索结果中URL没有说明文字,只有URL,标题也和页面真正标题不一样是什么情况,原因之一就是页面被索引了,但没有被抓取。如图所示淘宝在百度的收录就是典型。
百度索引了淘宝首页,但百度蜘蛛并没有抓取淘宝首页内容,因为淘宝的robots文件禁止百度抓取。存在于百度索引库的关于淘宝首页的是其它来源的信息,主要是外部链接,百度按照链接信息给出了猜想的标题(和真正页面标题不一样),但没有说明文字,点击快照进去看也是空的。
如果你的页面出现这种情况,说明搜索引擎知道页面的存在,却因为某种原因不能抓取页面。也许robots文件有问题?也许服务器设置出错禁止百度抓取了?也许宕机时间太长了?
索引了,但索引全了吗?
即使抓取了,也索引了,但不一定页面所有内容都被索引了。下图是某著名电子商务网站首页的百度快照:
热门分类内容显示了一半,后面没了,显然百度并没有索引整个页面,只索引了前半部分。也许是文件太大了?也许前半部分都是链接,百度觉得没有实质内容?一般这种情况下代码需要精简是肯定的,像图中这个页面,光导航就100多K,真的有必要把导航做成这么庞大吗?
这种情况下,页面被抓取时抓取了多少?只有查日志才能知道。如果抓取时是完整的,那么页面上的链接都是能被爬行的,虽然快照里显示的并不全,所以影响倒不大。如果抓取时就不全,那问题就比较大了,页面将失去展现内页的意义,赶紧精简代码吧。一般来说,蜘蛛能抓取的比索引的大得多。
就算抓取时是完整的,不影响链接爬行跟踪,那如果是内页,正文内容会不会没被索引完整呢?下图是某内页:
从右侧滑动条位置可以知道,产品属性后面内容还多着呢。再来看看这个页面的百度快照:
百度索引到产品属性部分结束了,后面那么多内容不索引了。如果后面还有重要文字内容会怎么样?如果导航再大点,页面正文完全没有被索引到会怎么样?答案是,没被索引到的内容就不会被搜索到。这种情况下,看着貌似一切正常,也抓取了,也索引收录了,但页面不会有排名,而怎么调整页面内容都是没用的,因为真正该索引的没被索引。