搜索引擎工作原理

  • 抓取网页。每个独立的搜索引擎都有自己的网页抓取程序爬虫(Spider)。爬虫顺着网页中的超链接,从这个网站爬到另一个网站,通过超链接分析连续访问抓取更多网页。被抓取的网页被称之为网页快照。由于互联网中超链接的应用很普遍,理论上,从一定范围的网页出发,就能搜集到绝大多数的网页。
  • 处理网页。搜索引擎抓到网页后,还要做大量的预处理工作,才能提供检索服务。其中,最重要的就是提取关键词,建立索引库和索引。其他还包括去除重复网页、分词(中文)、判断网页类型、分析超链接、计算网页的重要度/丰富度等。
  • 提供检索服务。用户输入关键词进行检索,搜索引擎从索引数据库中找到匹配该关键词的网页;为了用户便于判断,除了网页标题和URL外,还会提供一段来自网页的摘要以及其他信息。
  • 提交网站搜索。站长主动向搜索引擎提交网址,它在一定时间内定向向你的网站派出爬虫,扫描你的网站并将有关信息存入数据库,以备用户查询。由于搜索引擎索引规则相对于过去已发生很大变化,主动提交网址并不保证你的网站能进入搜索引擎数据库,因此站长应该在网站内容上多下功夫,并让搜索引擎有更多机会找到你并自动将你的网站收录。
  • 当用户以关键词查找信息时,搜索引擎会在数据库中进行搜寻,如果找到与用户要求内容相符的网站,便采用特殊的算法——通常根据网页中关键词的匹配程度,出现的位置、频次,链接质量等——计算出各网页的相关度及排名等级,然后根据关联度高低,按顺序将这些网页链接返回给用户。
  注意:我们想说的是您应该将您优化的重心和出发点主要放在用户体验上,因为用户才是您网站内容的主要受众,是他们通过搜索引擎找到了您的网站。过度专注于用特定的技巧获取搜索引擎自然搜索结果的排名不一定能够达到您想要的结果。
 

Spider 抓取系统的基本框架

  互联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做 “spider”。例如我们常用的几家通用搜索引擎蜘蛛被称为:Baiduspdier、Googlebot、Sogou Web Spider 等。

  Spider 抓取系统是搜索引擎数据来源的重要保证,如果把 web 理解为一个有向图,那么 spider 的工作过程可以认为是对这个有向图的遍历。从一些重要的种子 URL 开始,通过页面上的超链接关系,不断的发现新 URL 并抓取,尽最大可能抓取到更多的有价值网页。对于类似百度这样的大型 spider 系统,因为每时 每刻都存在网页被修改、删除或出现新的超链接的可能,因此,还要对 spider 过去抓取过的页面保持更新,维护一个 URL 库和页面库。

Baiduspider 主要抓取策略类型

  Baiduspider 在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下做简单介绍:

  1. 抓取友好性

  互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户访问又能尽量多的抓取到有价值资源的目的。

  通常情况下,最基本的是基于 ip 的压力控制。这是因为如果基于域名,可能存在一个域名对多个 ip(很多大网站)或多个域名对应同一个 ip(小网站共享 ip)的问题。实际中,往往根据 ip 及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长可以人工调配对自己网站的抓取压力,这时百度 spider 将优先按照站长的要求进行抓取压力控制。

  对同一个站点的抓取速度控制一般分为两类:其一,一段时间内的抓取频率;其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。

  2. 常用抓取返回码示意

  简单介绍几种百度支持的返回码:

  • 最常见的 404 代表 “NOT FOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果 spider 再次发现这条 url 也不会抓取;
  • 503 代表 “Service Unavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回 503 状态码,百度 spider 不会把这条 url 直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回 503,那么这条 url 仍会被认为是失效链接,从库中删除。
  • 403 代表 “Forbidden”,认为网页目前禁止访问。如果是新 url,spider 暂时不抓取,短期内同样会反复访问几次;如果是已收录 url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条 url 也会被认为是失效链接,从库中删除。
  • 301 代表是 “Moved Permanently”,认为网页重定向至新 url。当遇到站点迁移、域名更换、站点改版的情况时,我们推荐使用 301 返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。

  3. 多种 url 重定向的识别

  互联网中一部分网页因为各种各样的原因存在 url 重定向状态,为了对这部分资源正常抓取,就要求 spider 对 url 重定向进行识别判断,同时防止作弊行为。重定向可分为三类:http 30x 重定向、meta refresh 重定向和 js 重定向。另外,百度也支持 Canonical 标签,在效果上可以认为也是一种间接的重定向。

  4. 抓取优先级调配

  由于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr 优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到最优的抓取效果。

  5. 重复 url 的过滤

  spider 在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到最核心的是快速查找并对比,同时涉及到 url 归一化识别,例如一个 url 中包含大量无效参数而实际是同一个页面,这将视为同一个 url 来对待。

  6. 暗网数据的获取

  互联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider 难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通过开放平台采用数据提交的方式来解决,例如 “百度站长平台”“百度开放平台” 等等。

  7. 抓取反作弊

  spider 在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析 url 特征、分析页面大小及内容、分析站点规模对应抓取规模等等。