众所周知,搜索引擎的主要工作过程包括:抓取、存储、页面分析、索引、检索等几个主要过程。 互 联网信息爆发式增长,如何有效的获取并利用这些信息是搜索引擎工作中的首要环节。数据抓取系统作为整个搜索系统中的上游,主要负责互联网信息的搜集、保 存、更新环节,它像蜘蛛一样在网络间爬来爬去,因此通常会被叫做“spider”。例如我们常用的几家通用搜索引擎蜘蛛被称为:Baiduspdier、 Googlebot、Sogou Web Spider等。
; R& A6 V% {$ c- K$ @% w4 D7 L Y 下图为spider抓取系统的基本框架图,其中包括链接存储系统、链接选取系统、dns解析服务系统、抓取调度系统、网页分析系统、链接提取系统、链接分析系统、网页存储系统。spider即是通过这种系统的通力合作完成对互联网页面的抓取工作。
a, P8 @$ n' ~ h
网站优化100问-搜索引擎原理之抓取篇001
, ~/ ? q1 H( O& S. ]" j
spider 主要抓取策略类型上图看似简单,但其实spider在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。以下做简单介绍:
7 j( ]+ K" N2 D 1、抓取友好性4 a: b t6 ^0 K
互 联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用带宽,在有限的硬件和带宽资源下尽可能多的抓取到有价值资源。这就造成了另一个问题,耗费被抓网 站的带宽造成访问压力,如果程度过大将直接影响被抓网站的正常用户访问行为。因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响网站的正常用户 访问又能尽量多的抓取到有价值资源的目的。通常情况下,最基本的是基于ip的压力控制。这是因为如果基于域名,可能存在一个域名对多个ip(很多大网站) 或多个域名对应同一个ip(小网站共享ip)的问题。实际中,往往根据ip及域名的多种条件进行压力调配控制。同时,站长平台也推出了压力反馈工具,站长 可以人工调配对自己网站的抓取压力,这时百度spider将优先按照站长的要求进行抓取压力控制。4 A' y; ^5 F' m$ U1 \
对同一个站点的抓取速度控制一般分为两类:
) E5 Q3 h- t- y$ O 其一,一段时间内的抓取频率;0 v$ z* r$ _" Q3 m% `
其二,一段时间内的抓取流量。同一站点不同的时间抓取速度也会不同,例如夜深人静月黑风高时候抓取的可能就会快一些,也视具体站点类型而定,主要思想是错开正常用户访问高峰,不断的调整。对于不同站点,也需要不同的抓取速度。2 D! y7 B) [+ P* R
2、多种url重定向的识别
: ?7 W' ~9 E, x* T" v: U 互 联网中一部分网页因为各种各样的原因存在url重定向状态,为了对这部分资源正常抓取,就要求spider对url重定向进行识别判断,同时防止作弊行 为。重定向可分为三类:http 30x重定向、 refresh重定向和js重定向。另外,百度也支持Canonical标签,在效果上可以认为也是一种间接的重定向。
6 u" d* i% ?! J1 k% S6 E5 z 3、抓取优先级调配
8 c- D9 ^' w- Y/ C$ { 由 于互联网资源规模的巨大以及迅速的变化,对于搜索引擎来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取 优先级调配策略。主要包括:深度优先遍历策略、宽度优先遍历策略、pr优先策略、反链策略、社会化分享指导策略等等。每个策略各有优劣,在实际情况中往往 是多种策略结合使用以达到最优的抓取效果
( B6 z" C& l" }0 O/ n* L' Z 4、重复url的过滤
* h3 a/ \3 h& Y- ?& k spider在抓取过程中 需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。判断是否已经抓取其中涉及到最核心的是快速查找并对比, 同时涉及到url归一化识别,例如一个url中包含大量无效参数而实际是同一个页面,这将视为同一个url来对待。
, Y- R+ |2 a- p( q* | 5、暗网数据的获取
, c* G4 N, W& |& Y 互 联网中存在着大量的搜索引擎暂时无法抓取到的数据,被称为暗网数据。一方面,很多网站的大量数据是存在于网络数据库中,spider难以采用抓取网页的方 式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成搜索引擎无法抓取。目前来说,对于暗网数据的获取主要思路仍然是通 过开放平台采用数据提交的方式来解决,例如“百度站长平台”“百度开放平台”等等。
8 l0 t* d% N) J) M4 [, y 6、抓取反作弊
5 h6 v* ^4 L; h/ D4 n/ Z spider在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。例如分析url特征、分析页面大小及内容、分析站点规模对应抓取规模等等。
7 l4 _& ?/ y, o7 W7 H 造成spider抓取异常的原因
3 v& \% s P+ F( V% s 有 一些网页,内容优质,用户也可以正常访问,但是Baiduspider却无法正常访问并抓取,造成搜索结果覆盖率缺失,对百度搜索引擎对站点都是一种损 失,百度把这种情况叫“抓取异常”。对于大量内容无法正常抓取的网站,百度搜索引擎会认为网站存在用户体验上的缺陷,并降低对网站的评价,在抓取、索引、 排序上都会受到一定程度的负面影响,最终影响到网站从百度获取的流量。
8 A" ]; a+ Z; ` E 蒋鑫自媒体介绍:做过个人网站,有过电商、优化外包服务、医疗工作经历,五年网站seo优化经验,1年竞价经验,个人擅长企业网站优化及提高网站转化率,(Q:32269590 )' A% J) _" B1 y& W. I7 e+ C
下面向站长介绍一些常见的搜索引擎抓取异常原因:
; n# A6 }3 S) |% _+ M& _ 1,服务器连接异常/ o! d) ] h+ z% f/ G
服务器连接异常会有两种情况:一种是站点不稳定,Baiduspider尝试连接您网站的服务器时出现暂时无法连接的情况;一种是Baiduspider一直无法连接上您网站的服务器。 M) t! E3 u2 }
造 成服务器连接异常的原因通常是您的网站服务器过大,超负荷运转。也有可能是您的网站运行不正常,请检查网站的web服务器(如apache、iis)是否 安装且正常运行,并使用浏览器检查主要页面能否正常访问。您的网站和主机还可能阻止了Baiduspider的访问,您需要检查网站和主机的防火墙。# {$ V3 `9 a: F2 b7 r) w9 y
2,网络运营商异常:0 X0 i! n1 t& Q' X E: C) P
网络运营商分电信和联通两种,Baiduspider通过电信或网通无法访问您的网站。如果出现这种情况,您需要与网络服务运营商进行联系,或者购买拥有双线服务的空间或者购买cdn服务。* C& i \3 [. f
3,DNS异常:
: v: \) W. a5 f' @" A/ D- K2 w# V 当 Baiduspider无法解析您网站的IP时,会出现DNS异常。可能是您的网站IP地址错误,或者域名服务商把Baiduspider封禁。请使用 WHOIS或者host查询自己网站IP地址是否正确且可解析,如果不正确或无法解析,请与域名注册商联系,更新您的IP地址。! c6 r7 F" _4 w4 \
4,IP封禁:' C' k0 z/ S3 s! V/ \: T/ D
IP 封禁为:限制网络的出口IP地址,禁止该IP段的使用者进行内容访问,在这里特指封禁了BaiduspiderIP。当您的网站不希望 Baiduspider访问时,才需要该设置,如果您希望Baiduspider访问您的网站,请检查相关设置中是否误添加了 BaiduspiderIP。也有可能是您网站所在的空间服务商把百度IP进行了封禁,这时您需要联系服务商更改设置。* U' W. t. Z" x( X
5,UA封禁:
4 M" v) @( R% {- [ UA 即为用户代理(User-Agent),服务器通过UA识别访问者的身份。当网站针对指定UA的访问,返回异常页面(如403,500)或跳转到其他页面 的情况,即为UA封禁。当您的网站不希望Baiduspider访问时,才需要该设置,如果您希望Baiduspider访问您的网 站,useragent相关的设置中是否有Baiduspider UA,并及时修改。6 [" L. y0 G6 ]" j- k
6,死链:
* L: V# u8 d5 J% v; N 页面已经无效,无法对用户提供任何有价值信息的页面就是死链接,包括协议死链和内容死链两种形式:
4 p* x; _9 B @- s. L6 P 协议死链:页面的TCP协议状态/HTTP协议状态明确表示的死链,常见的如404、403、503状态等。% `+ d# g' \8 q- d
内容死链:服务器返回状态是正常的,但内容已经变更为不存在、已删除或需要权限等与原内容无关的信息页面。( d; a m7 z7 R8 ^ e
对于死链,建议站点使用协议死链,并通过百度站长平台--死链工具向搜索引擎提交,以便蜘蛛更快地发现死链,减少死链对用户以及搜索引擎造成的负面影响。
/ {+ w9 E: t9 V+ i3 l, h# U4 s* g' l 7,异常跳转:
9 \% g3 V/ p: N, Z4 D& h5 B 将网络请求重新指向其他位置即为跳转。异常跳转指的是以下几种情况:
6 Q( F% R2 S) L/ L$ o 1)当前该页面为无效页面(内容已删除、死链等),直接跳转到前一目录或者首页,百度建议站长将该无效页面的入口超链接删除掉
5 L( G* o/ r4 s) Y9 _# t 2)跳转到出错或者无效页面- u7 M, }3 ^0 k* Q- f" z
注意:对于长时间跳转到其他域名的情况,如网站更换域名,建议使用301跳转协议进行设置。
1 |; d: ]- H9 {, \ 8,其他异常:
, P! C4 t0 V: w+ B: ] 1)针对refer的异常:网页针对来自的refer返回不同于正常内容的行为。' Z; X0 \% J; K
2)针对ua的异常:网页对百度UA返回不同于页面原内容的行为。
3 P" j& _% T a! w' F/ c9 d) H8 r 3)JS跳转异常:网页加载了搜索引擎无法识别的JS跳转代码,使得用户通过搜索结果进入页面后发生了跳转的情况。
5 k: l+ o7 z0 b* g 4) 压力过大引起的偶然封禁:搜索引擎会根据站点的规模、访问量等信息,自动设定一个合理的抓取压力。但是在异常情况下,如压力控制失常时,服务器会根据自身 负荷进行保护性的偶然封禁。这种情况下,请在返回码中返回503(其含义是“Service Unavailable”),这样Baiduspider会过段时间再来尝试抓取这个链接,如果网站已空闲,则会被成功抓取。
8 h, O* `- F/ P7 X9 S) I 如果您在这篇文章有收获,就请分享给你认为好的QQ好友或者QQ群里,让大家都能成长! |