控制网络爬虫的任务分配方法和装置制造方法及图纸

技术编号:16482954 阅读:23 留言:0更新日期:2017-10-31 15:33
本申请公开了一种控制网络爬虫的任务分配方法和装置。其中,网络爬虫采用多线程执行任务,多线程预先存放于线程池内,该方法包括:通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数,其中,信号量的初始值为任务最大并行数,任务线程为经过信号量的线程;在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务;以及在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务。本申请解决了相关技术中通过中间控制器分配网络爬虫任务导致爬虫系统变得较为复杂的技术问题。

Task allocation method and device for controlling web crawler

A task allocation method and device for controlling web crawler are disclosed in this paper. The web crawler using multi-threaded tasks, multi thread pre stored in the thread pool, the method includes: to determine the amount of multi-threaded tasks in the thread is up to the maximum concurrent number of tasks, including through the signal, the initial signal value of maximum number of parallel tasks, the task for the semaphore thread by thread; in the signal through the volume estimate number of multi-threaded tasks in the task reaches maximum number of concurrent threads, thread pool thread gets the stop task from the URL queue; and the signal through the volume estimate number of multi-threaded tasks in the thread does not meet the maximum number of parallel tasks, control thread pool threads gets the task from the URL. This application solves the technical problem that the crawler system becomes more complex by distributing the crawler task through the intermediate controller in the related technology.

【技术实现步骤摘要】
控制网络爬虫的任务分配方法和装置
本申请涉及互联网领域,具体而言,涉及一种控制网络爬虫的任务分配方法和装置。
技术介绍
网络爬虫爬取网页时会从一个或若干初始网页的统一资源定位符(UniformResourceLocator,简称为URL)开始,抽取初始网页上的所有URL,并放入URL队列,等待网络爬虫从URL队列获取一个新的URL继续执行网页爬取。现有方法是通过中间控制器来给网络爬虫分配任务,所以网络爬虫任务的分配非常依赖于中间控制器,当中间控制器出现异常情况时会导致网络爬虫分配不到任务或者分配过多任务,如果网络爬虫分配不到任务就会一直处于空闲状态,浪费机器资源;如果网络爬虫同时执行过多的任务则会导致网络爬虫崩溃,造成任务和数据的丢失,带来较为严重的后果。具体地,现有通过中间控制器分配网络爬虫任务的方法存在如下缺点:首先,需要另写一个中间控制器程序分配网络爬虫的爬取任务,使得整个爬虫系统变得复杂,不易维护;其次,网络爬虫任务的分配非常依赖中间控制器程序,当中间控制器程序出现异常崩溃时,会存在数据丢失或是浪费机器资源的问题。针对相关技术中通过中间控制器分配网络爬虫任务导致爬虫系统变得较为复杂的问题,目前尚未提出有效的解决方案。
技术实现思路
本申请的主要目的在于提供一种控制网络爬虫的任务分配方法和装置,以解决相关技术中通过中间控制器分配网络爬虫任务导致爬虫系统变得较为复杂的问题。为了实现上述目的,根据本申请的一个方面,提供了一种控制网络爬虫的任务分配方法。网络爬虫采用多线程执行任务,多线程预先存放于线程池内,该方法包括:通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数,其中,信号量的初始值为任务最大并行数,任务线程为经过信号量的线程;在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务;以及在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务。进一步地,通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数包括:判断信号量的值是否为0;在判断出信号量的值为0时,则确定多线程中的任务线程的数量达到任务最大并行数;以及在判断出信号量的值不为0时,则确定多线程中的任务线程的数量未达到任务最大并行数。进一步地,在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务之后,该方法还包括:将信号量的值减1,在任务线程的任务执行完成或取消时,方法还包括:将信号量的值加1。进一步地,在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务之后,该方法还包括:控制线程池内的线程进入等待状态。进一步地,在通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数之前,该方法还包括:在网络爬虫启动时,从数据库中读取任务最大并行数,其中,数据库中预先存储有任务最大并行数;以及将任务最大并行数赋值给信号量,并作为信号量的初始值。为了实现上述目的,根据本申请的另一方面,提供了一种控制网络爬虫的任务分配装置。网络爬虫采用多线程执行任务,多线程预先存放于线程池内,该装置包括:判断单元,用于通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数,其中,信号量的初始值为任务最大并行数,任务线程为经过信号量的线程;阻止单元,用于在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务;以及第一控制单元,用于在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务。进一步地,判断单元包括:判断模块,用于判断信号量的值是否为0;第一确定模块,用于在判断出信号量的值为0时,则确定多线程中的任务线程的数量达到任务最大并行数;以及第二确定模块,用于在判断出信号量的值不为0时,则确定多线程中的任务线程的数量未达到任务最大并行数。进一步地,该装置还包括:减单元,用于在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务之后,将信号量的值减1,加单元,用于在任务线程的任务执行完成或取消时,将信号量的值加1。进一步地,该装置还包括:第二控制单元,用于在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务之后,控制线程池内的线程进入等待状态。进一步地,该装置还包括:读取单元,用于在网络爬虫启动时,从数据库中读取任务最大并行数,其中,数据库中预先存储有任务最大并行数;以及赋值单元,用于将任务最大并行数赋值给信号量,并作为信号量的初始值。本申请的网络爬虫采用多线程执行任务,多线程预先存放于线程池内,通过信号量判断多线程中的任务线程的数量是否达到任务最大并行数,其中,信号量的初始值为任务最大并行数,任务线程为经过信号量的线程;在通过信号量判断出多线程中的任务线程的数量达到任务最大并行数时,阻止线程池内的线程从URL队列中获取任务;以及在通过信号量判断出多线程中的任务线程的数量未达到任务最大并行数时,控制线程池内的线程从URL队列中获取任务,本申请通过信号量控制网络爬虫爬取任务数,不仅简化了爬虫系统的结构,而且可以避免网络爬虫执行过多或是过少的任务,解决了相关技术中通过中间控制器分配网络爬虫任务导致爬虫系统变得较为复杂的问题,进而达到了简化了爬虫系统的结构的效果。附图说明构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的控制网络爬虫的任务分配方法的流程图;以及图2是根据本申请实施例的控制网络爬虫的任务分配装置的示意图。具体实施方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。为了使本
的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。为了便于描述,以下对本申请涉及的一些概念或术语进行说明:爬虫系统,是指用于执行网页内容爬取的系统,在该爬虫系统中设置有网络爬虫。网络爬虫,是一种按照预设规则自动抓取互联网中信息的程序或者脚本。根据本申请实施本文档来自技高网
...
控制网络爬虫的任务分配方法和装置

【技术保护点】
一种控制网络爬虫的任务分配方法,其特征在于,所述网络爬虫采用多线程执行任务,所述多线程预先存放于线程池内,所述方法包括:通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数,其中,所述信号量的初始值为所述任务最大并行数;在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务;以及在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从所述URL队列中获取任务。

【技术特征摘要】
1.一种控制网络爬虫的任务分配方法,其特征在于,所述网络爬虫采用多线程执行任务,所述多线程预先存放于线程池内,所述方法包括:通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数,其中,所述信号量的初始值为所述任务最大并行数;在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务;以及在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从所述URL队列中获取任务。2.根据权利要求1所述的方法,其特征在于,通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数包括:判断所述信号量的值是否为0;在判断出所述信号量的值为0时,则确定所述多线程中的任务线程的数量达到所述任务最大并行数;以及在判断出所述信号量的值不为0时,则确定所述多线程中的任务线程的数量未达到所述任务最大并行数。3.根据权利要求1或2所述的方法,其特征在于,在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:将所述信号量的值减1,在所述任务线程的任务执行完成或取消时,所述方法还包括:将所述信号量的值加1。4.根据权利要求1或2所述的方法,其特征在于,在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:控制所述线程池内的线程进入等待状态。5.根据权利要求1或2所述的方法,其特征在于,在通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数之前,所述方法还包括:在所述网络爬虫启动时,从数据库中读取所述任务最大并行数,其中,所述数据库中预先存储有所述任务最大并行数;以及将所述任务最大并行数赋值给所述信号量,并作为所述信号量的初始值。6.一种控制网络爬虫的任务分配装...

【专利技术属性】
技术研发人员:杨杰
申请(专利权)人:北京国双科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1