CN107832136A - 一种网络爬虫程序的管理方法及装置 - Google Patents
一种网络爬虫程序的管理方法及装置 Download PDFInfo
- Publication number
- CN107832136A CN107832136A CN201711219894.3A CN201711219894A CN107832136A CN 107832136 A CN107832136 A CN 107832136A CN 201711219894 A CN201711219894 A CN 201711219894A CN 107832136 A CN107832136 A CN 107832136A
- Authority
- CN
- China
- Prior art keywords
- task
- queue
- redis
- concurrent
- crawled
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种网络爬虫程序的管理方法及装置,涉及互联网大数据领域。包括:Director进程对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;PMerger收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
Description
技术领域
本发明涉及互联网大数据领域,更具体的涉及一种网络爬虫程序的管理方法及装置。
背景技术
大规模网络爬虫程序具有任务量大,任务类型多,数据源本身限制多等特点。网络爬虫程序是一个沿着链接漫游万维网文档集合的程序,一般驻留在服务器上,通过给定的一些URL(英文为:Uniform Resource Locator,简称,统一资源定位符),利用HTTP(英文为:HyperText Transfer Protocol,简称,超文本传输协议)等标准协议读取相应文档,然后以文档中包括的所有未访问过的URL作为新的起点,继续进行漫游,直到没有满足条件的新URL为止。网络爬虫程序的主要功能是自动从Internet上的各万维网站点抓取万维网文档并从该万维网文档中提取一些信息来描述该万维网文档,为搜索引擎站点的数据库服务器追加和更新数据提供原始数据,这些数据包括标题、长度、文件建立时间、HTML(英文为:HyperText Markup Language,简称,超文本标记语言)文件中的各种链接数目等。
在某些以数据为中心的业务场景中,需要对大量数据进行采集,存储和处理。这种类型的业务具有数据量大,数据多样性,数据源本身限制多等特点,经常需要对各种类型的数据进行不同程序的开发和处理,数据处理程序的多样性导致开发的程序经常出现不稳定,可维护性较差等问题,从而增加业务执行成本和效率。例如:有些数据公司需要对大量搜索引擎网页数据进行分析和处理,从而进行流量预估和趋势分析等。市面上主流的搜索引擎包括Google,百度,360搜索,搜狗,微软必应等,有些搜索引擎又区分出桌面版和移动版,其中有些搜索引擎页面采用HTTPS加密传输,还有一些在单个IP(英文为:InternetProtocol,简称,网络之间互连的协议)请求频繁时会弹出验证码进行输入验证,甚至有一些搜索结果页面是通过JS技术动态渲染出来的而非纯HTML文档。
发明内容
本发明实施例提供一种网络爬虫程序的管理方法及装置,用以解决大规模爬虫程序的稳定持续运行和管理问题。
本发明实施例提供一种网络爬虫程序的管理方法,包括:
Director进程对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
PMerger收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
优选地,所述Redis并行作业组包括存储了已经递交的多个第一任务的ID的第一队列和所述第一任务正在进行爬取的第二队列;
所述PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取时,具体包括:
所述PWacher按照设定时间检查所述第二队列的长度,若所述第二队列的长度为零,则所述PWatcher检查所述第一队列的队头的所述第一任务的任务参数队列的长度,若所述任务参数队列的长度非零,则所述PWatcher将所述第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称。
优选地,所述Director进程对通过Web页面递交的作业进行任务参数设置后,还包括:
对存在的结果进行任务排重;
所述将所述作业作为第一任务添加到Redis并行作业组,具体包括:
所述Director进程通过定制化的业务模块查询所述第一任务的任务排重结果,若查询结果非空,则所述第一任务不进行爬取且将所述查询结果存储至Redis的缓冲区;若查询结果为空,则将所述第一任务存储至Redis的缓冲区。
优选地,所述将所述作业作为第一任务添加到Redis并行作业组时,还包括:
若将所述作业作为第一任务时发生异常,则确认当前流程进入FAILED状态;
所述将所述作业作为第一任务添加到Redis并行作业组之后,还包括:
若收到取消命名时,则确认当前流程进入CANCELED状态。
优选地,所述PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取之前,还包括:
若通过timeout方法确认所述第一任务与当前时间的差值大于超时阈值,则确认当前流程进入CANCELED状态。
本发明实施例还提供一种网络爬虫程序的管理装置,包括:
添加单元,用于对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
发送单元,用于当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
计算单元,用于收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
优选地,所述Redis并行作业组包括存储了已经递交的多个第一任务的ID的第一队列和所述第一任务正在进行爬取的第二队列;
所述发送单元具体用于:
所述PWacher按照设定时间检查所述第二队列的长度,若所述第二队列的长度为零,则所述PWatcher检查所述第一队列的队头的所述第一任务的任务参数队列的长度,若所述任务参数队列的长度非零,则所述PWatcher将所述第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称。
优选地,所述添加单元还用于:
对存在的结果进行任务排重;
所述添加单元具体用于:
所述Director进程通过定制化的业务模块查询所述第一任务的任务排重结果,若查询结果非空,则所述第一任务不进行爬取且将所述查询结果存储至Redis的缓冲区;若查询结果为空,则将所述第一任务存储至Redis的缓冲区。
优选地,所述添加单元还用于:
若将所述作业作为第一任务时发生异常,则确认当前流程进入FAILED状态;
若收到取消命名时,则确认当前流程进入CANCELED状态。
优选地,所述发送单元还用于:
若通过timeout方法确认所述第一任务与当前时间的差值大于超时阈值,则确认当前流程进入CANCELED状态。
本发明实施例提供一种网络爬虫程序的管理方法,包括:Director进程对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;PMerger收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。上述方法可以见到快速的定制相关业务的开发,节省了开发时间和成本,再者,可以将就大规模爬虫程序多样性分散带来的管理问题;从而解决了现有大规模爬虫程序的稳定持续运行和管理问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的框架结构示意图;
图2为本发明实施例提供的一种网络爬虫程序的管理方法流程示意图;
图3为本发明实施例提供的一种网络爬虫程序的管理装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
专业术语解释
1、任务:英文为Task,在本发明实施例中是指对某种类型数据单条目的一次性爬取。任务执行需要任务参数作为输入,在执行完成后将任务结果进行临时数据存储。
2、作业:英文为Job,在本发明实施例中是指对相同类型多个任务的执行进行流水控制以及涉及到的相关数据结构的封装描述。作业在整个运行处理过程中(包括采集,存储,处理阶段)存在若干种状态,以状态机的方式进行驱动。
3、爬虫引擎:英文为Crawling Engine,简称CE,是一种针对网络数据采集的插件引擎,支持针对网络数据采集的扩展开发,是一种爬虫所使用的资源池,更像一个爬虫容器,用来调度和管理各种爬虫程序。爬虫引擎职责单一,只为解决纯粹的业务问题。
程序语言解释:
1.指挥者Director API说明
方法签名:void submitJob(Job job);
功能描述:将配置完成的作业进行同步提交。
2.方法签名:Future<?>submitJobAsync(Job job,IJobSubmitAsyncListenerlistener);
功能描述:将配置完成的作业进行异步提交。
3.方法签名:void cancelJob(String jobId);
功能描述:取消某个等待中的作业。
4.方法签名:List<Job>listJobs(String tag);
功能描述:获取正在执行的作业列表。
5.方法签名:List<Job>listJobHistory(String tag,int offset,int count);
功能描述:获取已经结束的作业列表。
6.方法签名:long queryJobProgress(String jobId);
功能描述:获取某个作业的执行进度。
7.方法签名:long queryQueueLen(String crawlingQueueKey);
功能描述:获取某种类型作业的任务总长度。
8.方法签名:int queryJobState(String jobId);
功能描述:获取某个作业的状态。作业返回状态码:
9.资源上下文接口
10.相关数据结构说明
Redis数据结构:
10.1键名规则:cache_string_job_info_{jobId}
作用描述:用来缓存一个作业实例信息,在作业的执行中驻留在Redis中,如果作业结束则写入Mysql历史作业表中。
10.2键名规则:cache_hash_job_idx_{tag}
作用描述:按照标签缓存作业的ID列表,以支持按照标签索引查询。
10.3键名规则:queue_crawling_task_buffer_{jobId}
作用描述:某个作业的任务ID列表缓冲区,用于排重合并时使用。
10.4键名规则:queue_merging_task_buffer_{jobId}
作用描述:某个作业已经存在结果的任务ID列表缓冲区,用于排重合并时使用。
10.5键名规则:{jobCrawlingKey}_task
作业描述:某一类型作业组的并行列表,数据项为作业ID。
10.6键名规则:{jobCrawlingKey}_{jobId}
作用描述:某个正在等待执行中的作业任务参数缓冲区。
10.7键名规则:{jobCrawlingKey}_submited
作用描述:某一类型作业组的已提交作业的日志缓冲。
10.8键名规则:{jobCrawlingKey}_completed
作用描述:某一类型作业组的已爬取作业的日志缓冲。
10.9键名规则:{jobMergingKey}
作用描述:某一类型作业组正在爬取的任务参数列表。
11.Mysql作业历史表ce_job_history:
图1为本发明实施例提供的架构和角色结构示意图,如图1所示,该架构中主要包括有两个关键进程,分别为Director和Tracker,Director和Tracker分别运行在各自独立的进程中。
Director通过API方式与应用系统连接,通过Web页面加载可以为应用系统定制的模块实现多种类型的作业注册,配置和提交。
Tracker负责选择作业运行并跟踪作业的多种状态,以及管理作业的生命周期事件,例如从多个并行的作业中选择某个作业交给固定的爬虫程序执行,从而实现分时系统的特征。当作业的所有任务执行完成时启动分析处理程序进行计算和存储。当作业执行失败的时进行状态切换和调用在Director中配置的作业回调函数。
Tracker内部实现成两个逻辑组件PWatcher和PMerger。
PWatcher运行在定时器线程中,按照配置时间扫描一次所负责监控的Redis任务队列,根据不同的条件执行queueSelect和queueFinish操作,用来实现并行作业队列的切换和任务完成时的事件回调,当任务完成时如果所属作业存在合并任务则向作业配置的合并队列推送一条消息以激活PMerger。
PMerger用来监听所负责的Redis合并任务队列,当接收到合并消息时执行对应作业的数据处理程序。
图2示例性的示出了本发明实施例提供的一种网络爬虫程序的管理方法流程示意图,该方法主要包括以下步骤:
步骤101,Director进程对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
步骤102,当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
步骤103,PMerger收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
在步骤101中,由于Director通过API方式与应用系统连接,所以用于可以通过Web页面实现作业的递交,需要说明的是,在实际应用中,在Web页面递交作业之前,还需要先在Web页面进行作业注册,作业配置等操作。
当Director收到递交的作用后,需要对该作用进行任务参数设置,在本发明实施例中,任务参数配置可以包括类型作业组名称,合并队列名称,最大任务数量,超时阈值,是否存在合并任务,对应的定制化实现模块等。
进一步地,还需要对已经存在的结果的其他任务进行排重。在实际应用中,对于不同的第一任务在爬取时可能会存在任务参数相同的情况,由于爬虫程序是一个比较占用资源的处理过程,所以框架需要支持对多个同一类型作业的多个实例中同样任务参数进行排重。在本发明实施例中,主要通过定制化的业务模块提供的checkResultIfExisted回调实现。具体地,当Director进程通过定制化的业务模块查询第一任务的任务排重结果,若查询结果非空,则第一任务不进行爬取且将查询结果存储至Redis的缓冲区的queue_merging_task_buffer_{jobId}中;若查询结果为空,则将第一任务存储至Redis的缓冲区的queue_crawling_task_buffer_{jobId}中,同时生成爬取任务参数队列,以便后面在结果合并时使用。
需要说明的是,在实际应用中,当任务排重结果为空时,即不存在,则需要爬取和合并处理,需要爬取的任务才会生成任务参数并进行任务参数设置;而当任务排重结果为非空时,即已经存在了则不需要爬取,但是需要合并处理,不需要爬取也就不需要生成任务参数和进行任务参数设置。
在步骤101中,完成任务参数设置后的作业可以作为第一任务添加到Redis并行作业组。在实际应用中,在对作为进行参数设置时,若参数设置失败或者存在异常情况,Director会执行onClearup回调,相应地,该作业进入到FAILED状态,即针对作业的流程结束。
而在将作业作为第一任务添加到Redis并行作业组时,此时若用户通过Web页面提交取消命令时,则该第一任务执行onClearup回调,相应地,第一任务进入CANCELED状态,针对第一任务的流程结束。
在步骤102中,在实际应用中,由于爬取会从一个固定的消息队列中获取任务参数进行爬取,之后将结果写入Mysql的临时表中,由于当前正在执行爬取操作的只能有一个队列中的任务,那么在提交同一类型多个作业实例时就需要将多个作业的任务参数缓存在Redis中,从而可以通过分时设计实现对并行作业的虚拟化管理。
在本发明实施例中,为了解决上述问题,Redis并行作业组包括了两个队列,第一队列用于存储已经递交的多个第一任务的ID,第二队列用于存储正在执行爬取的第一任务。
而PWatcher会按照设定时间检查第二队列的长度,若第二队列的长度为零,则说明当前爬取任务为空闲,则PWatcher会检查第一队列的对头对应的第一任务的任务参数队列的长度,若第一任务的任务参数队列的长度为零,则说明第一任务的爬取刚刚完成;而若第一任务的任务参数队列的长度非零,则说明第一任务的爬取还没有进行,PWatcher会将第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称,从而可以实现爬取程序的切换,在实际应用中,PWatcher修改队列名称采用了Redis自带的RENAME命令实现,该命名如下所示:
RENAME{jobCrawlingKey}_job_id_1{jobCrawlingKey}。
需要说明的是,上述当PWatcher确定第一任务的爬取刚刚完成后,PWatcher需要执行爬取完成的后续事件驱动,在本发明实施例中,对执行行爬取完成的后续事件驱动不做具体的限定。
需要说明的是,在实际应用中,由于第一任务对应的任务参数内包括有超时阈值,也就是当第一任务添加到第一队列后,若PWatcher在调用超时阈值时,确认第一任务添加到第一队列的时间点与当前时间点之间的差值大于超时阈值,则直接执行作业超时回调onCrawlingTimeout,第一任务进入CANCELED状态,即针对第一任务的流程结束。
进一步地,当PWatcher将第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称,并获取到第一爬取结果后,PWatcher若确认当前第一爬取结果存在合并作业,则向第一任务对应的合并任务队列推送一个合并任务参数,即通过该合并任务参数向PMerger发送一个响应消息,从而激活PMerger。
在步骤103中,PMerger收到响应消息后,将第一任务对应的第一爬取结果加载到内存中,合并排重结果计算第一爬取结果的完成度等数据,在通过doMerge回调进行数据计算处理,在实际应用中,若计算处理过程存在异常情况,则需要执行onClearup回调,第一任务进入FAILED状态,即针对第一任务的流程结束;当整个计算处理过程完成时,执行onClearup回调,第一任务切换成DONE状态,即针对第一任务的流程结束。
需要说明的是,在本发明实施例中,第一任务对应的多种状态,比如CANCLED,DONE和FAILED均表示第一任务结束时的状态,第一任务结束时框架会清除Redis缓存中的作业及与该作业相关数据结构,同时将作业的信息写入到对应的Mysql作业历史表中。作业的State字段用来标识作业状态,finalStatus用来标识结束时的原因,例如CANCELD状态的原因有超时和手动取消,FAILED状态的异常原因也可能有多种。
基于同一发明构思,本发明实施例提供了一种网络爬虫程序的管理装置,由于该装置解决技术问题的原理与一种网络爬虫程序的管理方法相似,因此该装置的实施可以参见方法的实施,重复之处不再赘述。
如图3所示,该装置主要包括添加单元301,发送单元302和计算单元303。
添加单元301,用于对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
发送单元302,用于当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
计算单元303,用于收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
优选地,所述Redis并行作业组包括存储了已经递交的多个第一任务的ID的第一队列和所述第一任务正在进行爬取的第二队列;
所述发送单元302具体用于:
所述PWacher按照设定时间检查所述第二队列的长度,若所述第二队列的长度为零,则所述PWatcher检查所述第一队列的队头的所述第一任务的任务参数队列的长度,若所述任务参数队列的长度非零,则所述PWatcher将所述第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称。
优选地,所述添加单元301还用于:
对存在的结果进行任务排重;
所述添加单元301具体用于:
所述Director进程通过定制化的业务模块查询所述第一任务的任务排重结果,若查询结果非空,则所述第一任务不进行爬取且将所述查询结果存储至Redis的缓冲区;若查询结果为空,则将所述第一任务存储至Redis的缓冲区。
优选地,所述添加单元301还用于:
若将所述作业作为第一任务时发生异常,则确认当前流程进入FAILED状态;
若收到取消命名时,则确认当前流程进入CANCELED状态。
优选地,所述发送单元302还用于:
若通过timeout方法确认所述第一任务与当前时间的差值大于超时阈值,则确认当前流程进入CANCELED状态。
应当理解,以上一种网络爬虫程序的管理装置包括的单元仅为根据该设备装置实现的功能进行的逻辑划分,实际应用中,可以进行上述单元的叠加或拆分。并且该实施例提供的一种网络爬虫程序的管理装置所实现的功能与上述实施例提供的一种网络爬虫程序的管理方法一一对应,对于该装置所实现的更为详细的处理流程,在上述方法实施例一中已做详细描述,此处不再详细描述。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
Claims (10)
1.一种网络爬虫程序的管理方法,其特征在于,包括:
Director进程对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
PMerger收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
2.如权利要求1所述的方法,其特征在于,所述Redis并行作业组包括存储了已经递交的多个第一任务的ID的第一队列和所述第一任务正在进行爬取的第二队列;
所述PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取时,具体包括:
所述PWacher按照设定时间检查所述第二队列的长度,若所述第二队列的长度为零,则所述PWatcher检查所述第一队列的队头的所述第一任务的任务参数队列的长度,若所述任务参数队列的长度非零,则所述PWatcher将所述第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称。
3.如权利要求1所述的方法,其特征在于,所述Director进程对通过Web页面递交的作业进行任务参数设置后,还包括:
对存在的结果进行任务排重;
所述将所述作业作为第一任务添加到Redis并行作业组,具体包括:
所述Director进程通过定制化的业务模块查询所述第一任务的任务排重结果,若查询结果非空,则所述第一任务不进行爬取且将所述查询结果存储至Redis的缓冲区;若查询结果为空,则将所述第一任务存储至Redis的缓冲区。
4.如权利要求1所述的方法,其特征在于,所述将所述作业作为第一任务添加到Redis并行作业组时,还包括:
若将所述作业作为第一任务时发生异常,则确认当前流程进入FAILED状态;
所述将所述作业作为第一任务添加到Redis并行作业组之后,还包括:
若收到取消命名时,则确认当前流程进入CANCELED状态。
5.如权利要求1所述的方法,其特征在于,所述PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取之前,还包括:
若通过timeout方法确认所述第一任务与当前时间的差值大于超时阈值,则确认当前流程进入CANCELED状态。
6.一种网络爬虫程序的管理装置,其特征在于,包括:
添加单元,用于对通过Web页面递交的作业进行任务参数设置后,将所述作业作为第一任务添加到Redis并行作业组;
发送单元,用于当所述Redis并行作业组上当前一个任务完成时,PWatcher从所述Redis并行作业组中选择所述第一任务进行爬取,在爬取完获取到第一爬取结果后,若确定所述第一任务存在合并作业,则将所述第一任务发送至合并任务队列并向PMerger发送响应;
计算单元,用于收到所述响应后,将所述第一爬取结果加载到内存中,通过doMerge对所述第一任务进行数据计算处理。
7.如权利要求6所述的装置,其特征在于,所述Redis并行作业组包括存储了已经递交的多个第一任务的ID的第一队列和所述第一任务正在进行爬取的第二队列;
所述发送单元具体用于:
所述PWacher按照设定时间检查所述第二队列的长度,若所述第二队列的长度为零,则所述PWatcher检查所述第一队列的队头的所述第一任务的任务参数队列的长度,若所述任务参数队列的长度非零,则所述PWatcher将所述第一队列的对头的待执行的任务参数队列名称修改为正在执行爬取的任务队列名称。
8.如权利要求6所述的装置,其特征在于,所述添加单元还用于:
对存在的结果进行任务排重;
所述添加单元具体用于:
所述Director进程通过定制化的业务模块查询所述第一任务的任务排重结果,若查询结果非空,则所述第一任务不进行爬取且将所述查询结果存储至Redis的缓冲区;若查询结果为空,则将所述第一任务存储至Redis的缓冲区。
9.如权利要求6所述的装置,其特征在于,所述添加单元还用于:
若将所述作业作为第一任务时发生异常,则确认当前流程进入FAILED状态;
若收到取消命名时,则确认当前流程进入CANCELED状态。
10.如权利要求6所述的装置,其特征在于,所述发送单元还用于:
若通过timeout方法确认所述第一任务与当前时间的差值大于超时阈值,则确认当前流程进入CANCELED状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711219894.3A CN107832136A (zh) | 2017-11-28 | 2017-11-28 | 一种网络爬虫程序的管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711219894.3A CN107832136A (zh) | 2017-11-28 | 2017-11-28 | 一种网络爬虫程序的管理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107832136A true CN107832136A (zh) | 2018-03-23 |
Family
ID=61646299
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711219894.3A Pending CN107832136A (zh) | 2017-11-28 | 2017-11-28 | 一种网络爬虫程序的管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107832136A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109614412A (zh) * | 2018-12-11 | 2019-04-12 | 江苏瑞中数据股份有限公司 | 基于电力行业的云上数据发布服务两级共享缓存分析策略 |
CN110955853A (zh) * | 2018-09-26 | 2020-04-03 | 北京国双科技有限公司 | 一种数据存储方法及装置 |
CN110968755A (zh) * | 2018-09-29 | 2020-04-07 | 北京国双科技有限公司 | 一种爬取数据的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635718A (zh) * | 2009-08-26 | 2010-01-27 | 中兴通讯股份有限公司 | 网络爬虫系统及其获取资源的方法和网络资源抓取装置 |
CN101764807A (zh) * | 2009-12-16 | 2010-06-30 | 北京邮电大学 | 基于元搜索引擎的多源下载互联网资源的装置及方法 |
CN102063477A (zh) * | 2010-12-13 | 2011-05-18 | 百度在线网络技术(北京)有限公司 | 一种网站数据抓取装置及方法 |
CN107025296A (zh) * | 2017-04-17 | 2017-08-08 | 山东辰华科技信息有限公司 | 基于科技服务信息智能抓取系统数据收集方法 |
-
2017
- 2017-11-28 CN CN201711219894.3A patent/CN107832136A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101635718A (zh) * | 2009-08-26 | 2010-01-27 | 中兴通讯股份有限公司 | 网络爬虫系统及其获取资源的方法和网络资源抓取装置 |
CN101764807A (zh) * | 2009-12-16 | 2010-06-30 | 北京邮电大学 | 基于元搜索引擎的多源下载互联网资源的装置及方法 |
CN102063477A (zh) * | 2010-12-13 | 2011-05-18 | 百度在线网络技术(北京)有限公司 | 一种网站数据抓取装置及方法 |
CN107025296A (zh) * | 2017-04-17 | 2017-08-08 | 山东辰华科技信息有限公司 | 基于科技服务信息智能抓取系统数据收集方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110955853A (zh) * | 2018-09-26 | 2020-04-03 | 北京国双科技有限公司 | 一种数据存储方法及装置 |
CN110968755A (zh) * | 2018-09-29 | 2020-04-07 | 北京国双科技有限公司 | 一种爬取数据的方法及装置 |
CN109614412A (zh) * | 2018-12-11 | 2019-04-12 | 江苏瑞中数据股份有限公司 | 基于电力行业的云上数据发布服务两级共享缓存分析策略 |
CN109614412B (zh) * | 2018-12-11 | 2023-06-02 | 江苏瑞中数据股份有限公司 | 基于电力行业的云上数据发布服务两级共享缓存分析方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10824948B2 (en) | Decision tables and flow engine for building automated flows within a cloud based development platform | |
US11334465B2 (en) | Long running workflows for robotic process automation | |
US8458666B2 (en) | Methods and systems for implementing a test automation framework for testing software applications on UNIX/LINUX based machines | |
US9753706B2 (en) | Adding directives for versions of source files directly into source code | |
CN108647083A (zh) | 任务执行方法、装置、系统、电子设备及计算机可读介质 | |
CN112668386A (zh) | 使用机器人过程自动化用于文档处理的长时间运行工作流 | |
US9292575B2 (en) | Dynamic data aggregation from a plurality of data sources | |
US20150178052A1 (en) | Automated experimentation platform | |
US11010215B2 (en) | Recommending applications based on call requests between applications | |
US8914804B2 (en) | Handling queues associated with web services of business processes | |
CN105453035B (zh) | 用于接收对存储在计算机系统处的软件组件的更新的方法 | |
US8538793B2 (en) | System and method for managing real-time batch workflows | |
US10467576B2 (en) | Distributed software process tracking | |
CN107832136A (zh) | 一种网络爬虫程序的管理方法及装置 | |
CN1967503A (zh) | 测试软件应用的方法 | |
CN104517181B (zh) | 一种核电站企业内容管理系统及方法 | |
CN111814024B (zh) | 分布式数据采集方法、系统及存储介质 | |
CN108881485A (zh) | 保障大数据包下的高并发系统响应时间的方法 | |
EP2696297B1 (en) | System and method for generating information file based on parallel processing | |
CN110011875A (zh) | 拨测方法、装置、设备及计算机可读存储介质 | |
US8407713B2 (en) | Infrastructure of data summarization including light programs and helper steps | |
US10372701B2 (en) | Transaction processor | |
CN107958052A (zh) | 一种大规模网络爬虫程序的访问方法及装置 | |
CN104270443B (zh) | 一种能够动态解析Web应用的云计算系统及方法 | |
CN108829415A (zh) | 模型加载方法、服务器及计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180323 |