搜索引擎抓取系统

作者:鼎极网络发布日期:2019-11-13浏览次数:24

  搜索引擎抓取系统概述()

  编者按:站长朋友们,今后定期都将在这里跟大家分享一些有关搜索引擎工作原理及网站运营相关的内容,今天先简单介绍一下关于搜索引擎抓取系统中有关抓取系统基本框架、抓取中涉及的网络协议、抓取的基本过程三部分。

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

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

  1spider抓取系统的基本框架

  如下为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、dns解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。

1.png

  2spider抓取过程中涉及的网络协议

  搜索引擎与资源提供者之间存在相互依赖的关系,其中搜索引擎需要站长为其提供资源,否则搜索引擎就无法满足用户检索需求;而站长需要通过搜索引擎将自己的 内容推广出去获取更多的受众。spider抓取系统直接涉及互联网资源提供者的利益,为了使搜素引擎与站长能够达到双赢,在抓取过程中双方必须遵守一定的 规范,以便于双方的数据处理及对接。这种过程中遵守的规范也就是日常中我们所说的一些网络协议。以下简单列举:

  http协议:超文本传输协议,是互联网上应用为广泛的一种网络协议,客户端和服务器端请求和应答的标准。客户端一般情况是指终端用户,服务器端即指网 站。终端用户通过浏览器、蜘蛛等向服务器指定端口发送http请求。发送http请求会返回对应的httpheader信息,可以看到包括是否成功、服务 器类型、网页近更新时间等内容。

  https协议:实际是加密版http,一种更加安全的数据传输协议。

  UA属性:UAuser-agent,是http协议中的一个属性,代表了终端的身份,向服务器端表明我是谁来干嘛,进而服务器端可以根据不同的身份来做出不同的反馈结果。

  robots协议:robots.txt是搜索引擎访问一个网站时要访问的个文件,用以来确定哪些是被允许抓取的哪些是被禁止抓取的。 robots.txt必须放在网站根目录下,且文件名要小写。详细的robots.txt写法可参考 http://www.robotstxt.org 。百度严格按照robots协议执行,另外,同样支持网页内容中添加的名为robotsmeta标 签,indexfollownofollow等指令。

  3spider抓取的基本过程

  spider的基本抓取过程可以理解为如下的流程图:

2.png

  4.spider抓取过程中的策略

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

  1、抓取友好性:抓取压力调配降低对网站的访问压力

  2、常用抓取返回码示意

  3、多种url重定向的识别

  4、抓取优先级调配

  5、重复url的过滤

  6、暗网数据的获取

  7、抓取反作弊

  8、提高抓取效率,高效利用带宽

  1、抓取友好性

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

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

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

  2、常用抓取返回码示意

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

  1) 常见的404代表“NOT FOUND”,认为网页已经失效,通常将在库中删除,同时短期内如果spider再次发现这条url也不会抓取;

  2) 503代表“Service Unavailable”,认为网页临时不可访问,通常网站临时关闭,带宽有限等会产生这种情况。对于网页返回503状态码,百度spider不会把这条url直接删除,同时短期内将会反复访问几次,如果网页已恢复,则正常抓取;如果继续返回503,那么这条url仍会被认为是失效链接,从库中删除。

  3) 403代表“Forbidden”,认为网页目前禁止访问。如果是新urlspider暂时不抓取,短期内同样会反复访问几次;如果是已收录url,不会直接删除,短期内同样反复访问几次。如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条url也会被认为是失效链接,从库中删除。

  4)301 代表是“Moved Permanently”,认为网页重定向至新url。当遇到站点迁移、域名更换、站点改版的情况时,我们使用301返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。

  3、多种url重定向的识别

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

  4、抓取优先级调配

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

  5、重复url的过滤

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

  6、暗网数据的获取

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

  7、抓取反作弊

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

 


关键词:

  网址规范化 之 301转向:

  ①:什么是301转向?

  301转向又称301重定向、301跳转,是用户或蜘蛛向网站服务器发出访问请求时,服务器返回的HTTP数据流中头信息部分状态码的一种,表示本网址性转移到另一个地址。

  另外,还有其他的网址转向方法,例如:302转向、javascript转向、PHP/ASP/CGI程序转向等。这里有个重点:除了301转向外,其他的方法都是常用的作弊手法,虽然方法本身没有对错之分,但被作弊者用多了,搜索引擎对可疑的转向都是非常敏感等。所以,其他的方法还是少用为妙。

  ②:301转向传递权重

  例如:网页A用301重定向转到网页B,搜索引擎可以肯定网页A性改变地址,或者说实际上不存在了,搜索引擎就会把网页B当作的有效目标。而且,更重要的是:网页A积累的页面权重将被传递到网页B。

  举个例子:http://www.esobao.cn/是选定的规范化网址,下面的几个网址都做301转向到选定的规范化网址上,这样搜索引擎就知道它是规范化网址,而且会把这三个网址的权重都传递集中到规范化网址上。

  http://maxseo.cn

  http://maxseo.cn/index.html

  http://www.maxseo.cn/index.html

  可能有站长会问:301转向多久可以生效?一般来说的话,在百度站长工具的改版工具上做下规则提交,大概一周左右就会生效。

  ③:怎么样做301转向?

  关于怎么做301转向,这里建议参考这篇文章:(http://www.chinaz.com/web/2013/1212/330808.shtml)本篇文章,有详细的301转向操作方法,完全适合个人站长和企业站长。由于文字太长,这里就不写了。

  网址规范化 之 canonical标签(参考下百度站长平台给出的标准):

  ①:canonical标签有什么作用?

  对一组内容完全相同或高度相似的网页,通过使用Canonical标签可以告诉搜索引擎哪个页面为规范的网页,能够规范网址并避免搜索结果中出现多个内容相同或相似的页面,帮助解决重复内容的收录问题,避免网站相同内容网页的重复展示及权重的分散,提升规范网页的权重,优化规范网页的排名。

  ②:如何用canonical标签指定规范网址?

  可通过在每个非规范版本的 HTML 网页的 部分中,添加一个 rel="canonical" 链接来进行指定规范网址。

  例如,要指定指向网页 http://www.admin5.cn/product.php?id=15786 的规范链接,需要按以下形式创建 元素:

  <link rel=”canonical” href=”http://www.admin5.cn/product.php?id=15786”/>

  然后将上述链接复制到某网页所有非规范网页版本的 部分中(例如 http://www.admin5.cn/product.php?id=15786&active=1),即可完成设置。

  ③:可设置规范网页的几种情况举例:

  举例一、社区帖子可能由于置顶、突出颜色等行为导致内容完全相同的一个网页产生不同的链接,搜索引擎只会选择其中一个链接建立索引,如以下两个链接不同,内容完全相同的页面:

  http://www.a5.net/forum.php?mod=viewthread&tid=17868770&page=1#pid115642474

  http://www.a5.net/thread-17868770-1-1.html

  举例二、对商品的列表页面,按照价格或者优惠等顺序进行排序,但网页内容高度相似:

  http://mall.leho.com/pr-list?locid=75fb2a357d38397c5e1e75fa&cid=5e1e02f950a4101fb27571ee&order=discount

  http://mall.leho.com/pr-list?order=price_asc&locid=75fb2a357d38397c5e1e75fa&cid=5e1e02f950a4101fb27571ee

  举例三、网站有多个网页展示的为相同型号的商品,只是每个网页商品图的颜色不同,其他内容几乎完全相似,此时也可设置rel="canonical",将当下流行色彩的商品网页设置规范网页,百度有优先将其显示在搜索结果中。

  ④:百度会完全遵守rel="canonical"标签吗?

  网页中添加该标签后,就代表站长向百度某个网页作为规范的网页版本,百度会同时根据标签的及系统算法选择出合适的网页将其显示在搜索结果中。百度会根据网页内容实际情况考虑Canonical标签中的网页,但不完全遵守该标签。为了标签的效果,请一个页面中仅有一个Canonical标签。

  ⑤:此链接是相对的还是的?

  rel="canonical" 可与相对链接或链接一起使用,但建议您使用链接,以大程度地减少可能出现的混乱或问题。

  ⑥:rel="canonical"标签可用于在不同的域名中建议规范网址吗?

  如果网站需要更换域名,且使用的服务器不能创建服务器端重定向网址的情况下,就可以使用rel="canonical" 链接元素指定希望百度收录域的网址。

  301 404案例;

  页面301处理

  if Request.ServerVariables("Http_Host") ="xxxx.com" then

  Response.Status="301 Moved Permanently"

  Response.AddHeader "Location","http://www.xxxx.com/"

  Response.End

  end if

  多域名处理

  if Request.ServerVariables("Http_Host") ="xxxx.com" or Request.ServerVariables("Http_Host") ="xxxx.com" then

  Response.Status="301 Moved Permanently"

  Response.AddHeader "Location","http://www.xxxx.com/"

  Response.End

  end if



下面的情况基本上都是虚拟主机常用配置

  新一代数据中心http://gzidc.com/

  301设置

  

1.png

  .htaccess

  单域名301

  RewriteEngine On

  RewriteBase /

  RewriteCond %{HTTP_HOST} ^lszygw.com$ [NC]

  RewriteRule ^(.*)$ http://www.lszygw.com/$1 [L,R=301]

  多域名处理

  RewriteEngine On

  RewriteBase /

  RewriteCond %{HTTP_HOST} ^lszygw.com$ [OR]

  RewriteCond %{HTTP_HOST} ^linxigang.com$ [OR]

  RewriteCond %{HTTP_HOST} ^www.linxigang.com$ [NC]

  RewriteRule ^(.*)$ http://www.lszygw.com/$1 [L,R=301]

  404设置

  404.Asp

  2.png


  恒爱网络http://www.zzhidc.com/

  301设置

  httpd.ini 文件的代码如下 :

  [ISAPI_Rewrite]

  CacheClockRate 3600

  RepeatLimit 32

  RewriteCond Host: ^abc.com$

  RewriteRule (.*) http://www.abc.com$1 [I,RP]

  如

  [ISAPI_Rewrite]

  CacheClockRate 3600

  RepeatLimit 32

  RewriteCond Host: ^jnzhipin.net$

  RewriteRule (.*) http://www.jnzhipin.net$1 [I,RP]

  RewriteCond Host: ^jnzhipin.com$

  RewriteRule (.*) http://www.jnzhipin.net$1 [I,RP]

  RewriteCond Host: ^www.jnzhipin.com$

  RewriteRule (.*) http://www.jnzhipin.net$1 [I,RP]

  把以上内容修改成你自己的之后,把 httpd.ini 上传到你空间网站根目录 wwwroot下 。

  用FTP连接到空间,在wwwroot 同级目录建立一个名为 others 的新文件夹,如下图

  

3.png

  接下来去 http://pan.baidu.com/s/1gd42ZQj 下载ISAP组件,解压之后得到 rewrite2.dll

  把 rewrite2.dll 上传到 others 目录里。

  然后 登陆到你空间管理后台的 “独立面板”里,找到 “ISAP映射”,点击之后进入添加映射,筛选器名称 随便写个,路径如图所示写路径,然后点击后面的“设置”

  

4.png

  404设置(用404.htm)

  

5.png

  益息网络http://www.idc1.net/

  301设置()

  在根目录下有个index.asp文件

  

6.png

  if Request.ServerVariables("Http_Host") ="xxxx.com" then

  Response.Status="301 Moved Permanently"

  Response.AddHeader "Location","http://www.xxxx.com/"

  Response.End

  end if

  

7.png

  404设置(根据根目录下的文件设置)

  

8.png

  骑士互联http://www.74dns.com

  301设置(在根目录下放文件httpd.ini)

  文件代码代码

  [ISAPI_Rewrite]

  CacheClockRate 3600

  RepeatLimit 32

  RewriteCond Host: ^xxxx.net$

  RewriteRule (.*) http://www.xxxx.net$1 [I,RP]

  404设置(根据网站目录下文件情况)

  

9.png

  广深互联http://www.99idc.cn/

  301设置

  web.config文件的代码如下 :

  <?xml version="1.0" encoding="UTF-8"?>

  <configuration>

  <system.webServer>

  <rewrite>

  <rules>

  <rule name="CanonicalHostNameRule1">

  <match url="(.*)"/>

  <conditions>

  <add input="{HTTP_HOST}" pattern="^www.sanyoushun.com$"

  negate="true"/>

  </conditions>

  <action type="Redirect" url="http://www.sanyoushun.com/{R:1}"/>

  </rule>

  </rules>

  </rewrite>

  </system.webServer>

  </configuration>

  404设置(与骑士一样)