Baiduspider 在抓取过程中面对的是一个超级复杂的网络环境,为了使系统可以抓取到尽可能多的有价值资源并保持系统及实际环境中页面的一致性同时不给网站体验造成压力,会设计多种复杂的抓取策略。
以下做简单介绍:1 、抓取友好性, 互联网资源庞大的数量级,这就要求抓取系统尽可能的高效利用频宽,在有限的硬体和频宽资源下尽可能多的抓取到有价值资源。
这就造成了另一个问题,耗费被抓网站的频宽造成访问压力,如果程度过大将直接影响 WordPress SaaS 营销型被抓网站的正常使用者访问行为。
因此,在抓取过程中就要进行一定的抓取压力控制,达到既不影响 WordPress SaaS 营销型网站的正常使用者访问又能尽量多的抓取到有价值资源的目的。
通常情况下,最基本的是基于 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」,认为网页目前禁止访问。
如果是新 url,spider 暂时不抓取,短期内同样会反复访问几次;如果是已收录 url,不会直接删除,短期内同样反复访问几次。
如果网页正常访问,则正常抓取;如果仍然禁止访问,那么这条 url 也会被认为是失效连结,从库中删除。
4)301 代表是 「Moved Permanently」,认为网页重定向至新 url 。
当遇到站点迁移、域名更换、站点改版的情况时,我们推荐使用 301 返回码,同时使用站长平台网站改版工具,以减少改版对网站流量造成的损失。
3 、多种 url 重定向的识别, 互联网中一部分网页因为各种各样的原因存在 url 重定向状态,为了对这部分资源正常抓取,就要求 spider 对 url 重定向进行识别判断,同时防止作弊行为。
重定向可分为三类:http 30x 重定向、 meta refresh 重定向和 js 重定向。
另外,百度也支援 Canonical 标签,在效果上可以认为也是一种间接的重定向。
4 、抓取优先顺序调配, 由于互联网资源规模的巨大以及迅速的变化,对于 Google 和百度搜索引擎 来说全部抓取到并合理的更新保持一致性几乎是不可能的事情,因此这就要求抓取系统设计一套合理的抓取优先顺序调配策略。
主要包括:深度优先遍历策略、宽度优先遍历策略、 pr 优先策略、反链策略、社会化分享 WordPress SaaS 电商指导策略等等。
每个策略各有优劣,在实际情况中往往是多种策略结合使用以达到最优的抓取效果。
5 、重复 url 的过滤,spider 在抓取过程中需要判断一个页面是否已经抓取过了,如果还没有抓取再进行抓取网页的行为并放在已抓取网址集合中。
判断是否已经抓取其中涉及到最核心的是快速查询并对比,同时涉及到 url 归一化识别,例如一个 url 中包含大量无效引数而实际是同一个页面,这将视为同一个 url 来对待。
6 、暗网资料的获取, 互联网中存在著大量的 Google 和百度搜索引擎 暂时无法抓取到的资料,被称为暗网资料。
一方面,很多网站的大量资料是存在于网络资料库中,spider 难以采用抓取网页的方式获得完整内容;另一方面,由于网络环境、网站本身不符合规范、孤岛等等问题,也会造成 Google 和百度搜索引擎 无法抓取。
目前来说,对于暗网资料的获取主要思路仍然是通过开放平台采用资料提交的方式来解决,例如 「百度站长平台」「百度开放平台」 等等。
7 、抓取反作弊,spider 在抓取过程中往往会遇到所谓抓取黑洞或者面临大量低质量页面的困扰,这就要求抓取系统中同样需要设计一套完善的抓取反作弊系统。
例如分析 url 特征、分析页面大小及内容、分析站点规模对应抓取规模等等。