百度收录这个机制, 说白了就是搜索引擎把网站上的内容放到能让人搜到的数据库里的整个过程。
它核心的流程大概是这样的: 先用百度爬虫去发现网址, 然后抓到网页内容, 接着进行解析和去重操作, 之后再建立倒排索引,把这些东西都扔进搜索引擎里去排个序, 最后才能让普通人在搜索结果里看到并搜到它们。下面我们一步一步把这个过程拆开来看。
URL发现与爬虫抓取
百度主要通过这三种方式来发现全新的URL, 第一种方式是爬虫沿着网站内部的链接进行爬取, 这种方式是最核心的通道, 第二种方式是站长通过百度搜索资源平台主动提交新网址, 第三种方式是来自外部站点的链接引用, 在爬虫调度的时候, 会根据URL的新旧程度、页面的质量信号以及站的抓取频率配额来进行合理的分配, 对于那些新成立的站点或者是权重比较低的站点来说, 它们的抓取频率通常是以天为单位, 甚至有的时候是以周为单位, 而对于那些更新频率非常高且质量特别优秀的站点来说, 它们可以获得以小时为单位的抓取间隔。
内容解析与去重
当爬虫把HTML抓下来以后, 就会执行接下来的操作。首先做有效内容的提取, 也就是把那些导航、广告还有脚本噪声什么的给过滤掉。接着进行结构化字段的识别, 要找到像title、meta description、正文以及图片的alt标签这些内容。
然后呢, 会基于SimHash、Shingling这类算法来生成一个内容指纹。通过这个指纹去识别出重复的页面, 并且把那些重复的页面剔除掉。同时还会自动检测字符编码, 处理一下出现的乱码异常情况。只有那些没有因为被去重而拦截下来的页面, 才会进入下一个步骤。
索引建立
通过解析得到的页面, 会进入索引的构建阶段。在这个阶段里, 系统执行分词操作, 还会进行语义理解。基于这些处理, 系统生成倒排索引, 这个倒排索引是联系词和文档的, 也就是词对应文档。同时, 系统也会生成正排索引, 这个正排索引是联系文档和词的, 也就是文档对应词。
这个索引是采用增量更新的方式来进行更新的, 并不会做全量重建的工作。新的内容从抓取完成那一刻起, 到能够进入可以检索的索引当中去, 通常需要几小时甚至几天的时间才能完成, 具体的延迟时间是多少, 要取决于站点权重以及更新的节奏怎么样。
结果上线与排序
当一个页面进入索引库的时候, 它就具备了被别人检索出来的资格, 不过被收录了, 并不是说排名就会靠前。在排序的这个阶段, 会综合考虑到各种各样的因素, 比如内容的原创程度和深度如何。
还会看网站域名本身的权威度高不高, 还有历史表现怎么样子。同时也会判断查询相关性的匹配度高不高, 时效性权重又是多少。最后还要看看用户在点击这个页面的时候以及停留的时间行为反馈到底是怎样的。
影响收录效率的关键因素
像gname.xin这种刚刚上线的网站, 它是不是能被收录、以及收录的速度究竟有多快, 其中起决定作用的那些关键因素, 主要包括以下几个方面:
是否已经完成了ICP备案这个手续? 因为如果使用境内的服务器的话, 这是强制要求, 如果没有完成备案的域名, 那么爬虫会直接拒绝访问。
是否完成百度搜索资源平台站长验证
站点结构是否利于爬虫:避免纯JS渲染、控制页面深度在3级以内
更新频率:持续产出增量内容可提升抓取优先级
robots.txt配置:误屏蔽关键目录将导致蜘蛛无法访问
高频疑难
Q:已提交URL为何长期未收录?
排查的顺序是这样的, 首先第一步是要确认蜘蛛实际访问的记录, 也就是去查看资源平台上的抓取日志, 然后第二步是检查robots.txt文件和meta robots标签是不是被误屏蔽了, 接着第三步是需要确认页面内容有没有被判定为重复或者低质内容, 最后一步是排查是否依赖于纯客户端的渲染方式, 这会导致蜘蛛获取到的空壳HTML。
Q:如何加速新站收录?
第一步是使用百度搜索资源平台里面的“快速收录”这个功能, 把配额拿来主动提交链接, 但是要注意每天的数量是有上限的;第二步是保持sitemap.xml文件规范并且要能被访问得到;第三步是维持每天更新的节奏;第四步是要确保从首页跳转到任意一个正文页面的深度不要超过三级;最后一步是避免大面积使用frame或者是动态URL参数这些技术。


