CN107220297A - 面向软件项目的多源异构数据自动收集方法及系统 - Google Patents
面向软件项目的多源异构数据自动收集方法及系统 Download PDFInfo
- Publication number
- CN107220297A CN107220297A CN201710301051.1A CN201710301051A CN107220297A CN 107220297 A CN107220297 A CN 107220297A CN 201710301051 A CN201710301051 A CN 201710301051A CN 107220297 A CN107220297 A CN 107220297A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- crawl
- task
- url
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
-
- 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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/48—Indexing scheme relating to G06F9/48
- G06F2209/483—Multiproc
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供面向软件项目的多源异构数据自动收集方法及系统,该系统包括:多任务多线程爬取模块,用于对多个数据爬取任务进行统一的调度,并对不同类型的数据实现不同的爬取方法,以根据不同数据类型的数据入口地址自动调用不同的爬取方法对不同类型的数据爬取任务进行数据爬取;多源异构软件项目数据自动收集模块,用于根据用户输入的软件项目名称及URL自动化探测该软件项目数据的数据类型及其对应的数据入口地址,并根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,在所述多任务多线程爬取模块中调用不同的爬取方法对数据进行收集;数据解析存储模块,用于对上述收集的数据进行解析并存储到数据库中。
Description
技术领域
本发明涉及信息收集技术领域,尤其涉及面向软件项目的多源异构数据自动收集方法及系统。
背景技术
现有的计算机软件研究中,主要是使用开源软件项目的相关数据,而这些开源软件数据主要是通过以下方法收集的:
一,对于不同项目不同类型的软件项目数据,分别编写爬取程序获取资源。软件研究人员需要人工确定数据在互联网上的地址以及数据源的获取接口,最后根据这些信息编写相对应的爬取程序将数据获取下来。
二,使用通用的网页爬虫框架进行数据抓取。互联网网页爬虫技术较为成熟。网页爬虫利用网页页面中的超链接收集并下载互联网站点中的网页文件。开源社区中有许多成熟的开源爬虫项目可供扩展和使用,如Apache开源社区下的Nutch项目等。
但是,上述开源软件项目相关的数据收集方法存在以下问题:
(1)对于第一种类型,扩展性差。研究人员需要对于不同数据源的数据类型编写不同的爬取程序。在已有的工作中也有解决数据收集问题可复用的通用方法。但是其中每个不同的爬取模块的入口依然需要研究人员人工查找,针对不同项目的相同类型数据依然需要人工手动提供接口。
(2)对于第二种类型,适用范围有限,通用的网络爬取程序只能收集网页或其他文本文件类型数据,其不适用于结构化的开源数据。而在软件项目数据收集的过程中,现有的爬虫框架无法满足开源软件项目数据结构和数据接口的多样性。
由于现有技术中并不存在一个同时解决已知数据类型和未知数据类型的针对多项目多类型的数据收集问题的自动化方法。因此,研究一种更好的面向软件项目的多源异构数据的数据自动收集方法十分必要。
发明内容
本发明的目的是提供面向软件项目的多源异构数据自动收集方法及系统,该方法及系统能够收集不同类型的数据,扩展性强,可适用范围广。
针对上述目的,本发明所采用的技术方案为:
面向软件项目的多源异构数据自动收集方法,其步骤包括:
1)根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的网页爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取;
2)当上述爬取的Web页面中的URL是已知的数据类型的数据入口地址时,根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,并调用对应的爬取方法进行数据爬取;其中所述调用对应的爬取方法进行数据爬取包括以下步骤:
2-1)对上述创建的多个数据爬取任务进行调度;
2-2)当系统资源足够时,对每个数据爬取任务分配系统资源,并构建存储目录;
2-3)爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
2-4)根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
2-5)当上述所有子线程数据爬取结束后,释放系统资源;
3)对上述爬取的数据进行解析并存储到数据库中。
进一步地,步骤2)中判断上述爬取的Web页面中的URL是否是已知的数据类型的数据入口地址包括以下两个步骤:
1)调用detect方法判断上述爬取的Web页面中的URL是否是已知的数据类型的资源页面对应的地址,若是则过滤掉以提高爬取效率,否则继续对该Web页面中的URL进行判断;
2)调用detectEntry方法判断上述过滤后得到的Web页面中的URL是否是已知的数据类型的数据入口地址,若是则根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,否则继续利用上述通用的基于广度优先的网页爬虫方法进行爬取。
进一步地,步骤2)中所述数据爬取任务包括软件项目相关信息以及需要爬取的数据类型;其中所述软件项目相关信息包括软件项目名称、软件项目爬取开始时间、软件项目URL。
进一步地,步骤2-2)中所述存储目录包括存储文件目录和爬取任务记录;其中所述存储文件目录是指“软件项目名称/资源名称”形式的文件目录;所述爬取任务记录包括软件项目名称、数据类型、存储地址、任务状态。
面向软件项目的多源异构数据自动收集系统,包括多任务多线程数据爬取模块、多源异构软件项目数据自动收集模块和数据解析存储模块;
所述多任务多线程数据爬取模块用于对多个数据爬取任务进行统一的调度,并对不同类型的数据实现不同的爬取方法,以根据不同数据类型的数据入口地址自动调用不同的爬取方法对不同类型的数据爬取任务进行数据爬取;
所述多源异构软件项目数据自动收集模块用于根据用户输入的软件项目名称及URL自动化探测该软件项目数据的数据类型及其对应的数据入口地址,并根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,在所述多任务多线程数据爬取模块中调用对应的爬取方法对数据进行收集;
所述数据解析存储模块用于对所述多源异构软件项目数据自动收集模块收集的数据进行解析并存储到数据库中。
进一步地,所述多任务多线程数据爬取模块包括任务管理模块和数据爬取模块;其中所述数据爬取模块包括任务初始化模块、数据爬取单线程运行模块、数据爬取多线程运行模块和任务结束模块;
所述任务管理模块用于对多个数据爬取任务进行统一的调度;
所述任务初始化模块用于为上述每个数据爬取任务分配系统资源,并构建存储目录;
所述数据爬取单线程运行模块用于爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
所述数据爬取多线程运行模块用于根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
所述任务结束模块用于对上述所有子线程数据爬取结束后释放系统资源,并记录所述数据爬取模块的结束状态。
更进一步地,所述任务结束处理模块还用于对所述数据爬取模块发生异常结束处理时进行异常错误处理。
进一步地,所述多源异构软件项目数据自动收集模块包括项目相关站点的Web页面爬取模块、异构数据入口的侦测模块和特定种类数据爬取模块;
所述项目相关站点的Web页面爬取模块用于根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的网页爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取;
所述异构数据入口的侦测模块用于对上述爬取的Web页面进行判断,如果该Web页面中的URL是已知的数据类型的数据入口地址,则将该数据类型的数据入口地址分发到对应的特定种类数据爬取模块;
所述特定种类数据爬取模块用于根据从所述异构数据入口的侦测模块获取的已知的不同数据类型的数据入口地址,创建其对应的数据爬取任务,并在所述多任务多线程数据爬取模块中调用对应的爬取方法进行数据爬取。
更进一步地,所述异构数据入口的侦测模块中的判断方法包括以下两个步骤:
1)调用detect方法判断上述爬取的Web页面中的URL是否是已知的数据类型的资源页面对应的地址,若是则过滤掉以提高爬取效率,否则继续对该Web页面中的URL进行判断;
2)调用detectEntry方法判断上述过滤后得到的Web页面中的URL是否是已知的数据类型的数据入口地址,若是则分发到对应的特定种类数据爬取模块,否则继续利用上述通用的基于广度优先的网页爬虫方法进行爬取。
更进一步地,所述特定种类数据爬取模块爬取的数据类型包括邮件、文档、代码、Bug信息、版本控制信息;其中每种数据类型都有其对应的数据入口地址,并根据不同的数据入口地址分别实现detect方法、detectEntry方法和对应的数据爬取任务创建程序。
本发明的有益效果在于:本发明提供面向软件项目的多源异构数据自动收集方法及系统,该系统首先通过多任务多线程数据爬取模块对多个数据爬取任务进行统一的调度,并对不同类型的数据实现不同的爬取方法,以根据不同数据类型的数据入口地址自动调用不同的爬取方法对不同类型的数据爬取任务进行数据爬取;之后多源异构软件项目数据自动收集模块利用其提供的一种软件项目数据自动收集机制以根据用户输入的软件项目名称及URL自动化探测该软件项目数据的数据类型及其对应的数据入口地址,并根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,在所述多任务多线程数据爬取模块中调用对应的爬取方法对数据进行收集。本发明的优点具体包括:
1.能够自动收集不同来源不同类型的软件项目数据,通用性强,扩展性强。
2.对异构数据使用了多任务多线程数据爬取模块,使得针对不同类型数据的爬取可以在多任务多线程数据爬取模块中进行调度,提高了爬取效率。
3.有效减少了数据的重复收集,大大提高了资源使用率。
附图说明
图1为本发明提供的面向软件项目的多源异构数据自动收集方法示意图。
图2为本发明一种多任务多线程软件项目数据爬取方法流程图。
图3为本发明提供的面向软件项目的多源异构数据自动收集方法流程图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本发明提供面向软件项目的多源异构数据自动收集方法,如图1所示,该方法步骤包括:
1)项目相关站点的Web页面爬取模块根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的网页爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取;
2)异构数据入口的侦测模块对上述爬取的Web页面进行判断,如果该Web页面中的URL是已知的数据类型的数据入口地址,则将该数据类型的数据入口地址分发到对应的特定种类数据爬取模块;
3)特定种类数据爬取模块根据从所述异构数据入口的侦测模块获取的已知的不同数据类型的数据入口地址,创建其对应的数据爬取任务,并在所述多任务多线程数据爬取模块中调用对应的爬取方法进行数据爬取;其中在所述多任务多线程数据爬取模块中调用对应的爬取方法进行数据爬取包括以下步骤:
3-1)任务管理模块对上述创建的多个数据爬取任务进行调度;
3-2)当系统资源足够时,任务初始化模块对每个数据爬取任务分配系统资源,并构建存储目录;
3-3)数据爬取单线程运行模块爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
3-4)数据爬取多线程运行模块根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
3-5)任务结束模块对上述所有子线程数据爬取结束后,释放系统资源;
4)数据解析存储模块对上述爬取的数据进行解析并存储到数据库中。
所述数据爬取任务包括软件项目相关信息以及需要爬取的数据类型;且所述软件项目相关信息包括软件项目名称、软件项目爬取开始时间、软件项目URL等。
所述多任务多线程数据爬取模块包括任务管理模块和数据爬取模块;其中所述数据爬取模块包括任务初始化模块、数据爬取单线程运行模块、数据爬取多线程运行模块和任务结束模块;且所述数据爬取模块用于对不同类型的数据实现不同的爬取方法,并根据不同数据类型的数据入口地址自动调用不同的爬取方法对不同类型的数据爬取任务进行数据爬取。请参考图2,该图为本发明一种多任务多线程软件项目数据爬取方法流程图。
所述任务管理模块用于对多个数据爬取任务进行统一的调度;其实现方法包括以下步骤:
步骤1,创建一个待执行任务队列,从数据库中导入尚未完成的任务。
步骤2,在系统资源足够的情况下,取任务队列中的一个任务,并执行该任务初始化模块。
步骤3,每当有任务结束时,自动执行步骤2。
所述任务初始化模块用于为上述每个数据爬取任务分配系统资源并构建存储目录;其实现方法包括以下步骤:
步骤1,为任务获取一个系统线程。从系统线程池中获取一个线程,如果线程池达到容量上线则将该任务放入等待队列;当有线程被释放时,则等待队列中的任务获取该线程,且之后的步骤都利用该线程运行。
步骤2,建立存储文件目录。根据抓取资源所属开源项目在文件系统中建立“软件项目名称/资源名称”形式的文件目录,如果该文件目录已经存在,则返回此目录路径。
步骤3,建立爬取任务记录。在数据库中插入一条该资源爬取任务记录,记录中包括软件项目名称、数据类型、存储地址、任务状态等。
所述数据爬取单线程运行模块用于爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;其实现方法包括以下步骤:
步骤1,根据入口URL、不同的数据类型,先将需要爬取的数据的URL目录爬取下来。
步骤2,将步骤1中的URL目录根据事先定义的多线程个数,分成多分,之后传递给数据爬取多线程运行模块进行爬取。
步骤3,创建多个子线程,分别执行数据爬取模块的多线程部分,将步骤2中的URL进行爬取。
所述数据爬取多线程运行模块用于根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;其实现方法包括以下步骤:
步骤1,循环获取URL列表中的数据地址。
步骤2,资源爬取。利用统一的网络资源获取接口,将对应的数据资源爬取下来,并存储到相应路径下。
步骤3,资源解析储存。对爬取的数据进行解析,并将解析的结构化数据存储到数据库中。
所述任务结束模块用于为数据爬取模块结束处理时提供必要的处理,例如释放系统资源;并且记录所述数据爬取模块的结束状态。同时在数据爬取模块发生异常结束处理时,所述任务结束模块进行异常错误处理。其实现方法包括以下步骤:
步骤1,错误崩溃记录。任务如果未正常结束而强制退出时,在数据库中将该任务的记录标记为错误,并将捕捉到的错误信息记录下来。
步骤2,将系统资源释放。将该任务所占有的线程移除出线程池,并将线程结束掉,同时关闭所有的网络连接。
所述多源异构软件项目数据自动收集模块又包括项目相关站点的Web页面爬取模块、异构数据入口的侦测模块和特定种类数据爬取模块。请参考图3,该图为本发明提供的面向软件项目的多源异构数据自动收集方法流程图。
所述项目相关站点的Web页面爬取模块用于根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取。其实现方法包括以下步骤:
步骤1:根据输入的主站点URL和软件项目名称,爬取该URL对应的Web页面。
步骤2:对在步骤1中获取的Web页面进行解析,并获取其中所有与主站点URL集合相同前缀的URL,并将URL添加进URL列表中,之后获取URL列表中的一个URL。
步骤3:对于步骤2中获取的URL,利用异构数据入口的侦测模块的detect方法进行判定,如果是已知的数据类型的资源页面对应的地址,则过滤掉。
步骤4:根据步骤3中过滤后得到的Web页面中的URL,利用异构数据入口的侦测模块的detectEntry方法进行判定,如果是已知的数据类型的数据入口地址,则转特定数据收集(即分发到对应的特定种类数据爬取模块),否则转步骤2。其中在detectEntry方法中,针对每种不同的数据类型,事先构造其数据入口地址应当符合的URL正则表达式以及URL对应的Web页面中应当包含的关键字集合,如果URL符合该正则表达式并且包含关键字集合则判定该URL是已知的数据类型的数据入口地址;其中每种数据类型的正则表达式和关键字集合都为人为制定,根据需求进行修改。
所述异构数据入口的侦测模块用于对上述爬取到的Web页面进行判断,如果该Web页面中的URL是已知的数据类型的数据入口地址,则将其分发到对应的特定种类数据爬取模块,如果该URL不是已知的数据类型的数据入口地址,则继续利用上述通用的基于广度优先的爬虫方法进行爬取,以免进行重复爬取。所述对上述爬取到的Web页面进行判断包括以下两个步骤:
步骤1:调用对应特定种类数据爬取模块的detect方法,判断上述爬取的Web页面中的URL是否是已知的数据类型的资源页面对应的地址,若是则过滤掉以提高爬取效率,否则继续对该Web页面中的URL进行判断;
步骤2:调用对应特定种类数据爬取模块的detectEntry方法,判断上述过滤后得到的Web页面中的URL是否是已知的数据类型的数据入口地址,若是则根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,否则继续利用上述通用的基于广度优先的网页爬虫方法进行爬取。
所述特定种类数据爬取模块用于根据从所述异构数据入口的侦测模块获取的已知的不同数据类型的数据入口地址,创建其对应的数据爬取任务,并在所述多任务多线程数据爬取模块中调用对应的爬取方法进行数据的爬取。所述爬取的数据类型有:邮件、文档、代码、Bug信息、版本控制信息等。其中某些数据又可以细分为几种子类。邮件数据有:Mbox、mhonarc、GoogleGroup等;文档数据有:Stackoverflow、官方Tutorials等;代码库有:Git、SVN等;Bug信息有:Bugzilla、Jira等。每种类型数据都有其对应的数据入口地址,并根据不同的数据入口地址分别实现detect方法、detectEntry方法和对应的数据爬取任务创建程序。
所述数据解析存储模块用于对上述多源异构软件项目数据自动收集模块收集的数据进行解析与存储。同上述所述特定种类数据爬取模块,所述收集的数据依然包含多种类型的数据,每种类型数据都有其对应的数据格式,并根据其包含的具体内容设计存储模式,并存储到数据库中。对于邮件数据,包含信息有:发送人、发送时间、主题、正文等;对于代码库数据,包含信息有:版本号、修改内容、修改人员等;对于文档数据,包含信息有:段落结构化信息、文档内容、对应版本等;对于Bug数据,包含信息有:Bug内容、修改内容、提出人、修改时间等。其具体实现方法包括以下步骤:
步骤1:从上述存储目录中读取爬取的数据,根据其格式进行解析。
步骤2:对不同类型数据中解析出的信息进行筛选,并存储到数据库中。
下面为一具体实施例,来解释说明本发明。在本实施例中,用户需要Eclipse项目的各类软件项目数据,其具体步骤包括:
(1)启动多任务多线程数据爬取模块中的任务管理模块,从数据库中导入尚未完成的任务,比如:Eclipse邮件收集任务,Eclipse代码收集任务,Eclipse文档收集任务等等。
(2)启动多源异构软件项目数据自动收集模块对软件项目数据进行收集;其具体包括:
步骤1:根据用户输入的主站点URL和软件项目名称,爬取该URL对应的Web页面。例如主站点为https://eclipse.org/,创建Web页面类型的数据爬取任务对该站点进行网页爬取。
步骤2:对在步骤1中获取的Web页面进行解析,并获取其中所有与主站点URL相同前缀的URL,并将URL添加进URL列表中,之后获取URL列表中的一个URL。例如URL https://dev.eclipse.org/mailman/listinfo,其中就包含了主站点的URL前缀。
步骤3:对于步骤2中的URL,利用异构数据入口的侦测模块的detect方法进行判定,如果是已知的数据类型的资源页面对应的地址,则过滤掉以提高爬取效率,否则继续对该URL进行判断。例如http://dev.eclipse.org/mhonarc/lists/4diac-dev/maillist.html该页面就是一个mhonarc类型的Email数据,通过异构数据入口的侦测模块可以判断出来。
步骤4:根据步骤3中过滤后得到的URL,利用异构数据入口的侦测模块的detectEntry方法进行判定,如果是已知的数据类型的数据入口地址,则根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,否则继续利用上述通用的基于广度优先的网页爬虫方法(即转上述步骤2)进行爬取。
步骤5:将上述创建的数据爬取任务添加到所述多任务多线程数据爬取模块中的任务管理模块进行统一的调度,之后进行数据的爬取。
(3)多任务多线程数据爬取模块根据事先定义好的数据类型,加载相对应的数据爬取任务,并调用对应的爬取方法进行数据爬取;其中所述调用对应的爬取方法进行数据爬取包括以下步骤:
步骤1:当系统资源足够时,对每个数据爬取任务分配系统资源,并构建存储目录。例如/CrawlerData/Eclipse/各种类型数据名称。
步骤2:爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
步骤3:根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
步骤4:当上述所有子线程数据爬取结束后,释放系统资源;并且在数据爬取模块发生异常结束处理时,进行异常错误处理。
(4)对上述爬取的数据进行解析并存储到数据库中;其进一步包括以下子步骤:
步骤1:从存储目录/CrawlerData/Eclipse/Email中读取邮件的数据,根据其格式进行解析。
步骤2:对不同类型数据中解析出的信息进行筛选,并存储到数据库中。例如Email中的寄信人、收信人、时间戳、正文等内容。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。
Claims (10)
1.面向软件项目的多源异构数据自动收集方法,其步骤包括:
1)根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的网页爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取;
2)当上述爬取的Web页面中的URL是已知的数据类型的数据入口地址时,根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,并调用对应的爬取方法进行数据爬取;其中所述调用对应的爬取方法进行数据爬取包括以下步骤:
2-1)对上述创建的多个数据爬取任务进行调度;
2-2)当系统资源足够时,对每个数据爬取任务分配系统资源,并构建存储目录;
2-3)爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
2-4)根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
2-5)当上述所有子线程数据爬取结束后,释放系统资源;
3)对上述爬取的数据进行解析并存储到数据库中。
2.如权利要求1所述的方法,其特征在于,步骤2)中判断上述爬取的Web页面中的URL是否是已知的数据类型的数据入口地址包括以下两个步骤:
1)调用detect方法判断上述爬取的Web页面中的URL是否是已知的数据类型的资源页面对应的地址,若是则过滤掉以提高爬取效率,否则继续对该Web页面中的URL进行判断;
2)调用detectEntry方法判断上述过滤后得到的Web页面中的URL是否是已知的数据类型的数据入口地址,若是则根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,否则继续利用上述通用的基于广度优先的网页爬虫方法进行爬取。
3.如权利要求1所述的方法,其特征在于,步骤2)中所述数据爬取任务包括软件项目相关信息以及需要爬取的数据类型;其中所述软件项目相关信息包括软件项目名称、软件项目爬取开始时间、软件项目URL。
4.如权利要求1所述的方法,其特征在于,步骤2-2)中所述存储目录包括存储文件目录和爬取任务记录;其中所述存储文件目录是指“软件项目名称/资源名称”形式的文件目录;所述爬取任务记录包括软件项目名称、数据类型、存储地址、任务状态。
5.面向软件项目的多源异构数据自动收集系统,包括多任务多线程数据爬取模块、多源异构软件项目数据自动收集模块和数据解析存储模块;
所述多任务多线程数据爬取模块用于对多个数据爬取任务进行统一的调度,并对不同类型的数据实现不同的爬取方法,以根据不同数据类型的数据入口地址自动调用不同的爬取方法对不同类型的数据爬取任务进行数据爬取;
所述多源异构软件项目数据自动收集模块用于根据用户输入的软件项目名称及URL自动化探测该软件项目数据的数据类型及其对应的数据入口地址,并根据已知的不同数据类型的数据入口地址创建其对应的数据爬取任务,在所述多任务多线程数据爬取模块中调用对应的爬取方法对数据进行收集;
所述数据解析存储模块用于对所述多源异构软件项目数据自动收集模块收集的数据进行解析并存储到数据库中。
6.如权利要求5所述的系统,其特征在于,所述多任务多线程数据爬取模块包括任务管理模块和数据爬取模块;其中所述数据爬取模块包括任务初始化模块、数据爬取单线程运行模块、数据爬取多线程运行模块和任务结束模块;
所述任务管理模块用于对多个数据爬取任务进行统一的调度;
所述任务初始化模块用于为上述每个数据爬取任务分配系统资源,并构建存储目录;
所述数据爬取单线程运行模块用于爬取上述每个数据爬取任务中的URL目录,并将URL目录进行划分;
所述数据爬取多线程运行模块用于根据上述划分的URL目录创建多个子线程,并进行多线程数据爬取;
所述任务结束模块用于对上述所有子线程数据爬取结束后释放系统资源,并记录所述数据爬取模块的结束状态。
7.如权利要求6所述的系统,其特征在于,所述任务结束处理模块还用于对所述数据爬取模块发生异常结束处理时进行异常错误处理。
8.如权利要求5所述的系统,其特征在于,所述多源异构软件项目数据自动收集模块包括项目相关站点的Web页面爬取模块、异构数据入口的侦测模块和特定种类数据爬取模块;
所述项目相关站点的Web页面爬取模块用于根据用户输入的软件项目名称及URL,并利用通用的基于广度优先的网页爬虫方法,对与该软件项目相关的多个站点中的所有Web页面进行爬取;
所述异构数据入口的侦测模块用于对上述爬取的Web页面进行判断,如果该Web页面中的URL是已知的数据类型的数据入口地址,则将该数据类型的数据入口地址分发到对应的特定种类数据爬取模块;
所述特定种类数据爬取模块用于根据从所述异构数据入口的侦测模块获取的已知的不同数据类型的数据入口地址,创建其对应的数据爬取任务,并在所述多任务多线程数据爬取模块中调用对应的爬取方法进行数据爬取。
9.如权利要求8所述的系统,其特征在于,所述异构数据入口的侦测模块中的判断方法包括以下两个步骤:
1)调用detect方法判断上述爬取的Web页面中的URL是否是已知的数据类型的资源页面对应的地址,若是则过滤掉以提高爬取效率,否则继续对该Web页面中的URL进行判断;
2)调用detectEntry方法判断上述过滤后得到的Web页面中的URL是否是已知的数据类型的数据入口地址,若是则分发到对应的特定种类数据爬取模块,否则继续利用上述通用的基于广度优先的网页爬虫方法进行爬取。
10.如权利要求8所述的系统,其特征在于,所述特定种类数据爬取模块爬取的数据类型包括邮件、文档、代码、Bug信息、版本控制信息;其中每种数据类型都有其对应的数据入口地址,并根据不同的数据入口地址分别实现detect方法、detectEntry方法和对应的数据爬取任务创建程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710301051.1A CN107220297B (zh) | 2017-05-02 | 2017-05-02 | 面向软件项目的多源异构数据自动收集方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710301051.1A CN107220297B (zh) | 2017-05-02 | 2017-05-02 | 面向软件项目的多源异构数据自动收集方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107220297A true CN107220297A (zh) | 2017-09-29 |
CN107220297B CN107220297B (zh) | 2020-11-20 |
Family
ID=59943720
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710301051.1A Active CN107220297B (zh) | 2017-05-02 | 2017-05-02 | 面向软件项目的多源异构数据自动收集方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107220297B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647249A (zh) * | 2018-04-18 | 2018-10-12 | 平安科技(深圳)有限公司 | 舆情数据预测方法、装置、终端及存储介质 |
CN110109739A (zh) * | 2019-04-25 | 2019-08-09 | 北京奇艺世纪科技有限公司 | 一种多线程应用程序的关闭方法及装置 |
CN111026945A (zh) * | 2019-12-05 | 2020-04-17 | 北京创鑫旅程网络技术有限公司 | 多平台爬虫调度方法、装置和存储介质 |
CN112950293A (zh) * | 2021-04-07 | 2021-06-11 | 华能四川水电有限公司 | 一种企业外部数据采集与分析系统 |
CN113516456A (zh) * | 2021-08-06 | 2021-10-19 | 上海中通吉网络技术有限公司 | 一种基于jira应用的任务提醒系统和方法 |
CN113918793A (zh) * | 2021-12-10 | 2022-01-11 | 江苏宝和数据股份有限公司 | 一种多源科创资源数据采集方法 |
US11340941B2 (en) | 2020-01-13 | 2022-05-24 | Target Brands, Inc. | Tool for viewing jobs managed by heterogeneous job schedulers |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130030788A1 (en) * | 2011-07-29 | 2013-01-31 | At&T Intellectual Property I, L.P. | System and method for locating bilingual web sites |
CN103902732A (zh) * | 2014-04-18 | 2014-07-02 | 北京大学 | 自适应网络资源收集系统的构建及网络资源收集方法 |
CN104951512A (zh) * | 2015-05-27 | 2015-09-30 | 中国科学院信息工程研究所 | 一种基于互联网的舆情数据采集方法及系统 |
CN106096056A (zh) * | 2016-06-30 | 2016-11-09 | 西南石油大学 | 一种基于分布式的舆情数据实时采集方法和系统 |
-
2017
- 2017-05-02 CN CN201710301051.1A patent/CN107220297B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130030788A1 (en) * | 2011-07-29 | 2013-01-31 | At&T Intellectual Property I, L.P. | System and method for locating bilingual web sites |
CN103902732A (zh) * | 2014-04-18 | 2014-07-02 | 北京大学 | 自适应网络资源收集系统的构建及网络资源收集方法 |
CN104951512A (zh) * | 2015-05-27 | 2015-09-30 | 中国科学院信息工程研究所 | 一种基于互联网的舆情数据采集方法及系统 |
CN106096056A (zh) * | 2016-06-30 | 2016-11-09 | 西南石油大学 | 一种基于分布式的舆情数据实时采集方法和系统 |
Non-Patent Citations (1)
Title |
---|
曾李阳: "基于分布式网络爬虫的Web空间数据获取与管理方法研究", 《中国优秀硕士学位论文全文数据库 基础科学辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108647249A (zh) * | 2018-04-18 | 2018-10-12 | 平安科技(深圳)有限公司 | 舆情数据预测方法、装置、终端及存储介质 |
CN110109739A (zh) * | 2019-04-25 | 2019-08-09 | 北京奇艺世纪科技有限公司 | 一种多线程应用程序的关闭方法及装置 |
CN111026945A (zh) * | 2019-12-05 | 2020-04-17 | 北京创鑫旅程网络技术有限公司 | 多平台爬虫调度方法、装置和存储介质 |
CN111026945B (zh) * | 2019-12-05 | 2024-01-26 | 北京创鑫旅程网络技术有限公司 | 多平台爬虫调度方法、装置和存储介质 |
US11340941B2 (en) | 2020-01-13 | 2022-05-24 | Target Brands, Inc. | Tool for viewing jobs managed by heterogeneous job schedulers |
US11726819B2 (en) | 2020-01-13 | 2023-08-15 | Target Brands, Inc. | Tool for viewing jobs managed by heterogeneous job schedulers |
CN112950293A (zh) * | 2021-04-07 | 2021-06-11 | 华能四川水电有限公司 | 一种企业外部数据采集与分析系统 |
CN113516456A (zh) * | 2021-08-06 | 2021-10-19 | 上海中通吉网络技术有限公司 | 一种基于jira应用的任务提醒系统和方法 |
CN113918793A (zh) * | 2021-12-10 | 2022-01-11 | 江苏宝和数据股份有限公司 | 一种多源科创资源数据采集方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107220297B (zh) | 2020-11-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107220297A (zh) | 面向软件项目的多源异构数据自动收集方法及系统 | |
CN105243159A (zh) | 一种基于可视化脚本编辑器的分布式网络爬虫系统 | |
KR101315554B1 (ko) | 웹 페이지에 키워드를 할당하기 위한 방법 및 장치 | |
CN102880607A (zh) | 网络动态内容抓取方法及网络动态内容爬虫系统 | |
CN102521232B (zh) | 一种互联网元数据的分布式采集处理系统及方法 | |
CN106528275A (zh) | 数据任务的处理方法及任务调度器 | |
CN102279894A (zh) | 基于语义的查找、集成和提供评论信息的方法及搜索系统 | |
CN103970788A (zh) | 一种基于网页爬取的爬虫技术 | |
CN103605764A (zh) | 一种网络爬虫系统及网络爬虫多任务执行和调度方法 | |
US11762920B2 (en) | Composite index on hierarchical nodes in the hierarchical data model within a case model | |
CN107609150A (zh) | 一种基于页面元素选取的交互式网络爬虫创建方法及系统 | |
CN103365852A (zh) | 一种文档库系统中的并发控制方法及系统 | |
EP2521043A1 (en) | Method for establishing a relationship between semantic data and the running of a widget | |
CN101441629A (zh) | 一种非结构化网页信息的自动采集方法 | |
CN110288190A (zh) | 事件通知方法、事件通知服务器、存储介质及装置 | |
CN103258017B (zh) | 一种并行的垂直交叉网络数据采集方法及系统 | |
CN110865851A (zh) | 一种Android应用数据自动采集方法及系统 | |
CN106649357A (zh) | 用于爬虫程序的数据处理方法及装置 | |
CN102902768B (zh) | 文件内容搜索显示方法及系统 | |
CN107291938B (zh) | 订单查询系统及方法 | |
CN104965904A (zh) | 一种多平台数据的抓取方法和装置 | |
CN111125485A (zh) | 基于Scrapy的网站URL爬取方法 | |
CN110309648A (zh) | 一种网页监控方法及终端 | |
CN101534294A (zh) | 在多媒体播放器实现下载网络数据的方法与系统 | |
CN102486731B (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |