一种定制数据爬取工作流的方法及系统与流程

文档序号:11654382阅读:207来源:国知局
一种定制数据爬取工作流的方法及系统与流程

本发明属于网页数据处理领域,尤其涉及一种定制数据爬取工作流的方法及系统。



背景技术:

随着internet的迅速发展,以及b/s架构应用的普及,海量的web信息资源数以百万、千万计地产生。这使得在这些海量信息中获取到用户所需的有用信息难度异常的大。为了快速获取到有用信息,快速爬虫crawler的微型搜索引擎成为人们用于特定信息检索的必备工具。然而,随着人们对信息的多样化需求,以及数据分析系统对数据的内容和格式的要求,crawler获取的信息全而不精、精而不通的特点,已经无法满足人们的需要。

用户越来越感觉到很难在短时间内按照用户所需的工作流程准确筛选出需要的内容,很难迅速地找到所需要的信息。因此,crawler服务需要细化,需要更加通用的工作流程、更加有效的定制化服务。

因此,很多基于不同领域的垂直爬虫应运而生,以数据主题相关性强、结构化程度高的特点,解决了用户对特定领域垂直数据的抽取问题,在电子商务、房产领域、教育新闻以及专利检索等领域有所应用。这类爬虫可以让用户在某一垂直领域,以流程化步骤的方式执行爬取工作。

但是,目前的垂直爬虫存在严重不足。(1)当出现一个新的领域主题时,信息聚合能力较低,无法满足用户特殊需要,更加严重的是工作流的可定制化和通用性不强。(2)其次,抽取到的内容存储结构混乱,无法对获取到的信息进行有效的管理。(3)另外,对变动的业务需求也无法应对,扩展性低,适用范围很小,造成资源浪费。

这些问题导致了用户或业务系统不能获取到充分的、可用于分析的数据资源,如实验研究、舆情分析、商品信息比对等。这就需要构建相应的工作流可定制垂直爬虫,来抽取领域信息。因此,通过实现垂直爬虫的工作流定制化功能来解决特定领域的特殊网页的垂直流分析,快速地得到丰富的互联网信息资源,提高互联网信息聚合能力,使得垂直爬虫系统在数据抽取的工作流可定制性、通用性、灵活性方面的改进成为一个关键技术研究点。



技术实现要素:

为了解决用户或业务系统无法获取到充分的可用于分析的数据资源的不足,本发明提供了一种定制数据爬取工作流的方法。

本发明的一种定制数据爬取工作流的方法,包括:

配置网页的参数及存储路径,生成定制网页并同步存储至xml文件中;

采用dom方式来解析xml文件并生成爬虫树;

编译运行爬虫树,进而抓取出相应网页数据。

进一步的,该方法还包括:根据网页的存储路径,构建与存储路径中存储位置相匹配的步骤节点。

本发明通过构建与存储路径中存储位置相匹配的步骤节点,每个步骤节点与生成的爬虫树中的节点相对应,而且这样能够加快生成有序的可流程化的执行的爬虫树的速度,且提高了生成爬虫树的准确性。

进一步的,所述步骤节点中存储的信息包括步骤节点属性和执行动作信息;所述步骤节点属性包括步骤父节点和步骤子节点;执行动作信息包括下钻步骤和存盘步骤。

对于图片存盘,将图片的url保存起来;对于文字存盘,直接存储在本步骤节点或者父节点所设定的存储路径。

进一步的,构建与存储路径中存储位置相匹配的步骤节点的具体过程包括:

将网页的存储路径中的初始存储位置设置为步骤父节点;

按照网页的存储路径中存储位置的变化,依次顺序设置步骤父节点的步骤子节点以及步骤子节点的步骤子节点,同时配置相应步骤节点的执行动作信息。

进一步的,配置的网页参数包括图片和文字,所述存盘步骤包括图片存盘步骤和文字存盘步骤;当步骤子节点内的执行动作信息为存盘步骤,则根据配置的网页参数,构建相应步骤子节点的兄弟节点来执行图片存盘步骤或文字存盘步骤。

进一步的,在编译运行爬虫树的过程中,按照深度优先搜索顺序来遍历爬虫树,最终抓取出相应网页数据。这样能够提高网页数据抓取的准确性。

当抓取出网页数据失败时,间隔预设时间后重新再抓取,记录抓取次数直至预设最多次数值;若仍然失败,任务失败,则存储相关失败信息。这样用来提高网页数据抓取效率。

本发明还提供了一种定制数据爬取工作流的系统。

本发明的一种定制数据爬取工作流的系统,包括:

网页配置模块,其用于配置网页的参数及存储路径,生成定制网页并同步存储至xml文件中;

爬虫树生成模块,其用于采用dom方式来解析xml文件并生成爬虫树;

爬虫树编译模块,其用于编译运行爬虫树,进而抓取出相应网页数据。

进一步的,该系统还包括:步骤节点构建模块,其用于根据网页的存储路径,构建与存储路径中存储位置相匹配的步骤节点;

优选地,在爬虫树编译模块中,按照深度优先搜索顺序来遍历爬虫树,最终抓取出相应网页数据。

进一步的,所述步骤节点中存储的信息包括步骤节点属性和执行动作信息;所述步骤节点属性包括步骤父节点和步骤子节点;执行动作信息包括下钻步骤和存盘步骤。

进一步的,所述步骤节点构建模块还用于:

将网页的存储路径中的初始存储位置设置为步骤父节点;

按照网页的存储路径中存储位置的变化,依次顺序设置步骤父节点的步骤子节点以及步骤子节点的步骤子节点,同时配置相应步骤节点的执行动作信息;

优选地,配置的网页参数包括图片和文字,所述存盘步骤包括图片存盘步骤和文字存盘步骤;当步骤子节点内的执行动作信息为存盘步骤,则根据配置的网页参数,构建相应步骤子节点的兄弟节点来执行图片存盘步骤或文字存盘步骤。

优选地,在所述爬虫树编译模块中,当抓取出网页数据失败时,间隔预设时间后重新再抓取,记录抓取次数直至预设最多次数值;若仍然失败,任务失败,则存储相关失败信息。

与现有技术相比,本发明的有益效果是:

本发明通过实现垂直爬虫的定制化功能来解决特定领域的特殊网页分析,快速地得到丰富的互联网信息资源,提高互联网信息聚合能力,以xml文件的方式存储更加高效,且便于管理,而且采用dom方式来解析xml文件并生成爬虫树;编译运行爬虫树,进而抓取出相应网页数据,使得垂直爬虫系统在数据抽取的通用性、灵活性方面的得到巨大改进。能够让用户在短时间内准确的筛选出需要的内容。

附图说明

构成本申请的一部分的说明书附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。

图1是生成定制网页并同步存储至xml文件的流程图;

图2是采用dom方式来解析xml文件并生成爬虫树的流程图;

图3是编译运行爬虫树的流程图。

具体实施方式

应该指出,以下详细说明都是例示性的,旨在对本申请提供进一步的说明。除非另有指明,本文使用的所有技术和科学术语具有与本申请所属技术领域的普通技术人员通常理解的相同含义。

需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图限制根据本申请的示例性实施方式。如在这里所使用的,除非上下文另外明确指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器件、组件和/或它们的组合。

本发明针对不同的爬取网站和数据爬取需求,可以个性化定制爬取路径、爬取逻辑以及爬取数据存储等工作流程,并可检测工作流的正确性以及合理性。数据爬取工作流一经定义,数据爬取工作可按照预定义方式展开。采用本发明,可以使得爬取过程流程化、定制化,可快速适应不同的爬取需求。

具体来说:

一是用户针对不同的爬取网站和数据爬取需求,通过网页前端对爬取的相关架构、步骤、参数、存储方式等信息进行个性化定制,对爬取数据进行聚焦处理,定制自己所需的爬取流程。

二是用图形方式管理。利用步骤管理对象定义步骤节点,每个步骤节点是个步骤定义对象,可以是存盘步骤,也可以是下钻步骤,可以递归进一步定义下层步骤节点。

步骤定义中的动作由爬取对象封装,存盘步骤调用存储对象进行存储,而下钻步骤将爬取结果列表作为下层节点的爬取范围列表。

下面结合附图与实施例对本发明作进一步说明。

本发明共有三大步骤:定制并创建xml文件、解析xml并生成爬虫树、编译运行。

第一步:定制并创建xml文件,如图1所示。

步骤101:将格式化的配置信息存储在指定文件夹下,里面是程序所需要的一些基本的默认参数。

步骤102:打开定制系统网页。

步骤103:从根节点开始,配置每一个节点的参数。

其中,每一个节点的参数包括:节点名称、爬取的目标、用来匹配相关数据的正则表达式、节点完成的动参数。

节点名称为用户自定义节点名称,类似于注释,和程序不相关;

爬取的目标为要爬取的网页链接;

节点完成的动作包括下钻和存盘,存盘又包括保存文本、增加文本还是保存图片。

步骤104:定义上述节点是否有子节点,若有,进行步骤105。若没有,进行步骤106。

步骤105:创建子节点,即下钻节点,再进行步骤103进行配置节点参数,进行迭代。

步骤106:存盘节点,保存相应的存盘目录以及文件名字。

步骤107:定义上述节点是否有兄弟节点(用来完成其它任务),若有,进行步骤108。若没有,进行步骤109。

步骤108:创建兄弟节点,再进行步骤103进行配置参数,进行迭代。

步骤109:配置信息完成。

步骤110:根据上述信息,生成所需要的xml文件。

第二步:下面以一个实施例对xml解析实施过程进行具体的阐述,如图2所示。

步骤201:读取存储爬虫树的xml文件,然后用dom方式解析xml文件,并将整个xml文件解析内容放入内存中,供程序进一步解析结构。

步骤202:,然后用dom方式解析xml文件,并将整个xml解析内容放入内存中,供程序进一步解析结构。

分步骤1:首先实例化dom解析器的工厂documentbuilderfactory,然后从dom工厂获得dom解析器。

分步骤2:把要解析的xml文档转化为输入流,以便dom解析器解析它。

分步骤3:解析xml文档的输入流,得到一个document;根据document进行进一步解析。

步骤202:通过解析协议,根据步骤201得到的document可以获得xml文件的结构和节点(包括节点的子节点)的定制内容进一步读取xml。

步骤203:使用递归算法,以当前节点为根按层次,层层解析,将xml中的定制爬取流内容解析成所需要的爬取步骤节点的数据格式。

步骤204:按照预先设定的爬取爬虫树的通用结构,来组合解析xml得到的步骤节点,形成一个包含完整爬取工作流程的爬虫树。

步骤205:将完整的爬虫树加载到定制页面中,可以重新对步骤节点进行增添、删除、修改操作,重新定制工作流。

将修改后的定制工作流写回文件存储。对于获取到的树形工作流,可正式按照深度搜索dfs顺序,执行爬取流,正常进行爬取工作。

第三步:编译运行。如图3所示:

步骤301:从根节点开始,根节点的任务一般情况下是根据初始链接,抓取到网页中最大页数,然后按照某种规则去构造其余页数的网页链接,保存在一个列表中。循环地将此链接传递给所有的子节点,将此链接作为子节点抓取的目标对象。

步骤302:第二层节点根据根节点传入的网页链接,将此网页当中的所有数据(比如某一个手机)的具体链接抓取到,存进列表中。然后又循环将此链接传递给子节点,作为子节点的抓取目标。

步骤303:从第三层开始,将开始真正抓取所需要的数据。将可能有多层。每层也可能会有多个节点,这些节点必须按照逻辑顺序进行排列。首先根据各种参数去抓取网页中的数据,存储在一个列表中。

步骤304:然后根据其步骤名称去进行下钻或者存盘,存盘的话,有多种行为,继续根据行为名称进行保存文本、增添文本或者保存图片等。

步骤305:下钻节点的话,每一个节点都有子节点的基本属性。遍历其子节点。递归执行步骤303。

步骤306:遍历完所有节点,抓取数据完毕。

同时针对爬取访问频率的问题,提供两种解决方案:

a.一种是在每访问一个网页结束,休息随机时间x(x∈[0.5,1])秒,来解决访问频率。

b.第二种是访问失败时,休息n秒,重新再访问,记录访问次数,最多m次;若仍然失败,任务失败,相关失败信息存储在相关文本中。

针对两种方案进行效率分析结果如下:

访问一个网页的时间是x(单位是秒,以下时间的单位都是秒),访问两个网页之间的时间间隔为ti,访问的网页数为y页。假设访问第n次的失败率为hn%

那么采用第一种方案所耗时间为

采用第二种方案所耗时间为xy+hn%·n秒。

可以得出当y→∞,第一种方案所耗费的间隔平均时间为而第二种方案的所耗间隔平均时间为当h%·n>t时,也是就h%>t/n时,第二种方案所耗时间比较长;反之h%<t/n时,第一种方案所耗时间比较长。

根据实验情况,综合考虑,第二种情况的效率更高,效率比例约是h%·n=t/2,因此本发明主要采用第二种解决方案来提高效率。

综上所述通过本发明实施例,改进现有的垂直爬虫技术,更高效地实现信息资源的获取能力。采用本发明,可以使爬取过程流程化、定制化,可快速适应不同的爬取需求。快速地得到丰富的互联网信息资源,提高互联网信息聚合能力,使得垂直爬虫系统在数据抽取的通用性、灵活性方面得到极大改进。

本发明的一种定制数据爬取工作流的系统,包括:

(1)网页配置模块,其用于配置网页的参数及存储路径,生成定制网页并同步存储至xml文件中。

在网页配置模块中,设置爬取数据的存储路径,设置文件名,以及对文件进行存储操作。以及用于对爬取步骤生成的xml进行存储,并设置存储路径、文件名。

在该模块中,还定制爬取网站的范围、正则表达式的模版、爬取结果,以及对爬取的字符串结果进行简单的处理。

(2)爬虫树生成模块,其用于采用dom方式来解析xml文件并生成爬虫树;

(3)爬虫树编译模块,其用于编译运行爬虫树,进而抓取出相应网页数据;

在爬虫树编译模块中,按照深度优先搜索顺序来遍历爬虫树,最终抓取出相应网页数据。

在所述爬虫树编译模块中,当抓取出网页数据失败时,间隔预设时间后重新再抓取,记录抓取次数直至预设最多次数值;若仍然失败,任务失败,则存储相关失败信息。

进一步的,该系统还包括:步骤节点构建模块,其用于根据网页的存储路径,构建与存储路径中存储位置相匹配的步骤节点;

步骤节点中存储的信息包括步骤节点属性和执行动作信息;所述步骤节点属性包括步骤父节点和步骤子节点;执行动作信息包括下钻步骤和存盘步骤。

进一步的,步骤节点构建模块还用于:

将网页的存储路径中的初始存储位置设置为步骤父节点;

按照网页的存储路径中存储位置的变化,依次顺序设置步骤父节点的步骤子节点以及步骤子节点的步骤子节点,同时配置相应步骤节点的执行动作信息;

配置的网页参数包括图片和文字,所述存盘步骤包括图片存盘步骤和文字存盘步骤;当步骤子节点内的执行动作信息为存盘步骤,则根据配置的网页参数,构建相应步骤子节点的兄弟节点来执行图片存盘步骤或文字存盘步骤。

一个爬虫树是根据步骤节点之间的关系和结构生成的树状,来表达和执行流程的结构。最终执行的是以完整的爬虫树来执行,按照深度优先策略的顺序执行。

具体的,存储爬虫树方法,通过用户在定制网页上输入的定制参数和结构,同步以xml文件方式进行存储。无须手动定制xml的结构,本发明会自动根据定制的爬虫树的结构来设计xml的结构。之后,用户可以重新加载xml,解析并重新对其进行修改。

具体的,解析xml文件的方法,采用dom方式解析。根据节点的内容来自动生成爬取模块、存储模块、步骤定义模块,并转换为一个treenode。根据xml各节点的关系,组合treenode,生成爬虫树。

上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明的技术方案的基础上,本领域技术人员不需要付出创造性劳动即可做出的各种修改或变形仍在本发明的保护范围以内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1