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队列中获取任务。
【技术特征摘要】
1.一种控制网络爬虫的任务分配方法,其特征在于,所述网络爬虫采用多线程执行任务,所述多线程预先存放于线程池内,所述方法包括:通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数,其中,所述信号量的初始值为所述任务最大并行数;在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务;以及在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从所述URL队列中获取任务。2.根据权利要求1所述的方法,其特征在于,通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数包括:判断所述信号量的值是否为0;在判断出所述信号量的值为0时,则确定所述多线程中的任务线程的数量达到所述任务最大并行数;以及在判断出所述信号量的值不为0时,则确定所述多线程中的任务线程的数量未达到所述任务最大并行数。3.根据权利要求1或2所述的方法,其特征在于,在通过所述信号量判断出所述多线程中的任务线程的数量未达到所述任务最大并行数时,控制所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:将所述信号量的值减1,在所述任务线程的任务执行完成或取消时,所述方法还包括:将所述信号量的值加1。4.根据权利要求1或2所述的方法,其特征在于,在通过所述信号量判断出所述多线程中的任务线程的数量达到所述任务最大并行数时,阻止所述线程池内的线程从URL队列中获取任务之后,所述方法还包括:控制所述线程池内的线程进入等待状态。5.根据权利要求1或2所述的方法,其特征在于,在通过信号量判断所述多线程中的任务线程的数量是否达到任务最大并行数之前,所述方法还包括:在所述网络爬虫启动时,从数据库中读取所述任务最大并行数,其中,所述数据库中预先存储有所述任务最大并行数;以及将所述任务最大并行数赋值给所述信号量,并作为所述信号量的初始值。6.一种控制网络爬虫的任务分配装...
【专利技术属性】
技术研发人员:杨杰,
申请(专利权)人:北京国双科技有限公司,
类型:发明
国别省市:北京,11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。