迅睿CMS免费开源框架
免费开源CMS
  • 首页
  • 产品动态
    • 官方公告
    • 功能介绍
    • 疑难解答
  • 产品购买
    迅睿建站程序

    迅睿CMS框架是一款PHP8高性能·简单易用的CMS开源开发框架,基于MIT开源许可协议发布,免费且不限制商业使用,是免费开源的产品,以万端互联为设计理念,支持的微信公众号、小程序、APP客户端、移动端网站、PC网站等多终端式管理系统。

    迅睿CMS产品
    迅睿建站系统
    安全加固系统
    国产化数据库
    小程序开发
    版本更新日志
    捐赠迅睿团队
    迅睿服务方案
    迅睿授权套餐
    网站服务套餐
    OEM版权套餐
    迅睿售后服务
    网站安全部署
    网站故障修复
    网站漏洞修补
    木马清理服务
    电商解决方案
    多用户商城方案
    供应链商城方案
    分销商城方案
    SAAS商城方案
    拼团/竞拍商城方案
    跨境电商方案
    品牌内购解决方案
    福利商城解决方案
    企业订货系统解决方案
    个性化定制方案
    企业官网设计
    行业网站设计
    门户网站设计
    多语言外贸网站设计
    APP小程序设计
  • 应用市场
    • 应用插件
    • 模板界面
    • 小程序
  • 源码下载
  • 开发服务
    • 开发服务
    • 提交需求
    • 官方服务
    • 开发报价
  • 技术支持
  • 帮助文档
    • 新手学习合集
    • 视频教程讲解

    • 新手入门指南
    • 后台操作教程
    • 二次开发文档
    • 插件开发文档
    • 模板制作教程
    • API接口开发
    • 插件使用教程
    • 常见问题汇总

    • 模板标签生成器
    • 自定义字段调用
    • API接口测试工具
  • 控制台

抓取提速策略(合作抓取策略)

2021-09-05 14:59:51 CMS

抓取提速策略(合作抓取策略)

提速基本可以采用下面几种方法。

(1)提高抓取单个网页的速度。

(2)尽可能减少不必要的抓取任务。

(3)增加同时工作的爬虫数量。

事实证明,受到万维网发展水平的限制,第(1)种方法基本不可行,单个网页的抓取速度受到下载带宽的限制,在现有技术条件下很难任意提高;第(2)种方法难度很大,由于需要和万维网的变化保持紧密同步,所以冗余的抓取总是不可避免的,减少不必要的抓取会导致网页重访不及时,这样就不能快速同步目标网页的变化;第(3)种方法通过增加爬虫数量提高总体抓取速度是可行的。

在多个爬虫抓取的情况下,如何将工作量分解成为主要的问题,即要解决一个网页交给哪一个爬虫抓取?如果分工不明,很可能多个爬虫抓取了相同的网页,从而引入额外的开销。通常采用以下两种方法来进行抓取任务的分解。

(1)通过Web主机的IP地址来分解,使某个爬虫仅抓取某个地址段的网页。

(2)通过网页的域名来分解,使某个爬虫仅抓取某个域名段的网页。

如何选择这两种方案呢?

万维网在网络基础设施中按照IP地址来确定主机位置,IP地址为点分十进制数,难于记忆。由此采用了域名对IP地址进行一次映射,由于域名对人友好,于是出现了一些问题,即存在多个域名对应同样的IP的情况,对于中小网站来说,通常采用这种方法提供不同的Web服务。这主要出于经济的考虑,因为可以只配置一台服务器。而对于大型网站,如新浪和搜狐这些门户网站通常采用负载均衡的IP组技术,同样的域名对应于多个IP地址,一方面提高系统健壮性,一方面做到了负载均衡。

鉴于多域名对应相同IP和同域名对应多IP的情况,通常的做法是按照域名分解任务。即只要保证不重复抓取大型网站的网页,小型网站即便重复抓取也可以接受的策略分配任务。这种分配方法将不同的域名分配给不同的爬虫抓取,某一个爬虫只抓取固定一个域名集合下的网页。例如sina.com.cn会固定交给spider1抓取,zoujingsousuoyinq.cn会固定交给spider2抓取,zoujingsousuoyinqbook.cn会固定交给spider3抓取等。

这两种方案的主要区别可以通过下面两个例子进一步理解。

假定zoujingsousuoyinq.cn和zoujingsousuo yinqbook.cn是两个域名不同、但IP相同的网站,假定为10.10.67.208。有这样两个网页,即http://www.zoujingsousuoyinq.cn/index.html和http://www.zoujingsousuoyinqbook.cn/index.html,在经过域名解析后,实际上它们同为http://10.10.67.208/index.html。采用域名分解的方案,spider2和spider3就会重复抓到这个网页。由于这两个站点信息较小,所以可以容忍因抓重而带来的损失。

反之,我们如果通过IP分配抓取任务的方案,例如sina.com.cn(71.5.7.138)被“指定”交给spider1抓取,sina.com.cn(71.5.6.136)被“指定”交给spider2抓取,zoujingsousuoyinq.cn(10.10.67.208)被“指定”交给spider3抓取,zoujingsousuo yinqbook.cn(10.10.67.208)被“指定”交给spider3抓取。这种分配方案,对于不同域名指向相同IP的情况,例如zoujingsousuoyinq.cn和zoujingsousuoyinqbook.cn的抓取工作都由spider3完成,没有重复抓取问题。但是sina.com.cn对应多个IP,被分配由spider1和spider2分别抓取,这样spider1和spider2抓取工作就相互重复。很显然,新浪属于大型网站,这种因为抓重带来的损失往往是巨大的。

通过比较,为了照顾大站按照域名分解的策略更加合理。在下载系统中,按照域名分解抓取任务(网页集合)的工作由一个称为“调度员”的模块来处理,通过域名分解将不同的网页调度给不同的爬虫进行抓取。因此,下载系统主要由爬虫和调度员构成。

形式化的调度分配方式如下:

首先假定有n个爬虫可以并行工作,并且定义一个可以提取URL域名的函数domain,例如:

说明如下:

(1)对于任意的URL,利用domain函数提取URL的域名。

(2)用MD5签名函数签名域名,MD5(domain(URL))。

(3)将MD5签名值对n取模运算,int spider_no=MD5(domain(URL))%n。

(4)该URL分配给编号为spider_no的爬虫进行抓取。

由于模运算可以实现将一个全集分成多个等价类,所以等价类的并集等于全集,且一个等价类中的元素必然不属于另一个等价类中。

等价关系形式化表述如下。

令U为全集,通过某种等价关系可以将集合U分别映射到集合S1,S2,...,Sn上,并且满足如下两个条件:

(1)S1∪S2∪...∪Sn=U。

(2)∀a∈Si,∀b∈Sj,Si!=Sj,则有a!=b。



上一篇:IEFT不重复抓取策略
下一篇:爬虫抓取的网页策略

Copyright © 四川迅睿云软件开发有限公司

蜀ICP备19023384号
川公网安备 51010602001037号
增值电信业务经营许可证:川B2-20211858