CN112579858A - 一种数据爬取方法及装置 - Google Patents
一种数据爬取方法及装置 Download PDFInfo
- Publication number
- CN112579858A CN112579858A CN201910945088.7A CN201910945088A CN112579858A CN 112579858 A CN112579858 A CN 112579858A CN 201910945088 A CN201910945088 A CN 201910945088A CN 112579858 A CN112579858 A CN 112579858A
- Authority
- CN
- China
- Prior art keywords
- crawling
- task
- page
- result
- successful
- 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
Images
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/951—Indexing; Web crawling techniques
-
- 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]
- G06F16/9566—URL specific, e.g. using aliases, detecting broken or misspelled links
Abstract
本发明公开了一种数据爬取方法及装置,涉及数据采集技术领域,主要目的能够在快速识别爬取失败的爬取任务的基础上,快速合并爬取任务的新旧爬取结果;主要技术方案包括:根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;对爬取失败的爬取任务执行重爬操作,直至爬取成功;对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
Description
技术领域
本发明涉及数据采集技术领域,特别是涉及一种数据爬取方法及装置。
背景技术
互联网已成为最大的公共数据源,而从该公共数据源中爬取有价值数据资源已成为采集有价值数据的重要手段。
在针对爬取任务的爬取过程中,由于会存在网络故障、网站暂时瘫痪、URL(Uniform Resource Locator,统一资源定位符)失效以及数据爬取系统异常等情况,因此爬取失败的情况时有发生。目前,为了保证计划的爬取任务均能成功爬取,在执行爬取操作之后,通常采用遍历记录有爬取结果的任务结果表的方式,识别出爬取失败的爬取任务,以便对失败的爬取任务执行重爬操作。但是遍历任务结果表耗时较长,并不能快速的识别出爬取失败的爬取任务。另外,重爬的爬取任务的爬取结果和之前爬取成功的爬取任务的爬取结果,基于爬取成功的时间分批次的返回给爬取请求端,各批次的爬取结果存在重复和关联等问题,爬取结果较为混乱。
发明内容
有鉴于此,本发明提出了一种数据爬取方法及装置,主要目的在于能够在快速识别爬取失败的爬取任务的基础上,快速合并爬取任务的新旧爬取结果。
第一方面,本发明提供了一种数据爬取方法,所述方法包括:
根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
对爬取失败的爬取任务执行重爬操作,直至爬取成功;
对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
第二方面,本发明提供了一种数据爬取装置,所述装置包括:
记录单元,用于根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
确定单元,用于根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
重爬单元,用于对爬取失败的爬取任务执行重爬操作,直至爬取成功;
合并单元,用于对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
第三方面,本发明提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现第一方面中所述的数据爬取方法。
第四方面,本发明提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行第一方面中所述的数据爬取方法。
第五方面,本发明提供了一种设备,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行第一方面中所述的数据爬取方法。
借由上述技术方案,本发明提供的一种数据爬取方法及装置,根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务。然后根据爬取任务配置表和记录结果之间的差集,确定爬取失败的爬取任务。对爬取失败的爬取任务执行重爬操作直至爬取成功。对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。通过上述可知,本发明提供的方案通过爬取任务配置表和记录爬取成功的爬取任务的记录结果之间的差集,便可以及时确定出爬取失败的爬取任务,并对爬取失败进行重爬处理。为了避免爬取结果出现混乱,对爬取成功的爬取任务和重爬成功的爬取任务的爬取进行合并处理。可见,本发明提供的方案在快速识别爬取失败的爬取任务的基础上,能够快速合并爬取任务的新旧爬取结果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本发明一个实施例提供的一种数据爬取方法的流程图;
图2示出了本发明另一个实施例提供的一种数据爬取方法的流程图;
图3示出了本发明一个实施例提供的一种数据爬取装置的结构示意图;
图4示出了本发明另一个实施例提供的一种数据爬取装置的结构示意图;
图5示出了本发明一个实施例提供的一种设备的结构示意图。
具体实施方式
下面将参照附图更加详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
如图1所示,本发明实施例提供了一种数据爬取方法,该方法主要包括:
101、根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务。
本实施例中所述的爬取任务配置表是执行数据爬取操作的执行依据。该爬取任务配置表中记录有一个或多个爬取任务,依据爬取任务配置表中的爬取任务执行数据爬取操作。该爬取任务配置表中的爬取任务可以以网址的形式存在,另外,为了区分爬取任务配置表中的各爬取任务,则各爬取任务分别具有其各自对应的任务ID(标识)。示例性的,如表-1所示,该表-1即为爬取任务配置表,在该表中存在4个爬取任务,4个爬取任务均以网页地址的形式存在于爬取任务配置表(表-1中的url即表征网址)。
表-1
本实施例中,在爬取操作完成后,为了清楚识别爬取任务配置表中的哪些爬取任务被爬取成功,则记录爬取成功的爬取任务。采用为各爬取成功的爬取任务分别对应添加结果标识的方式记录爬取成功的爬取任务。结果标识的生成方法与爬取任务对应的页面有关,且结果标识的生成方法至少存在如下几种:
第一种,爬取成功的爬取任务对应的页面为单页面时,结果标识的生成的方法为:获取每个爬取成功的爬取任务对应的任务标识;确定爬取任务为单页面任务,并获取单页面任务对应的页面URL;对单页面任务对应的页面URL进行哈希计算,得到单页面任务对应的哈希编码;根据单页面任务对应的哈希编码和所述任务标识,生成单页面任务对应的结果标识。
这里所述的单页面任务是指爬取任务仅从一个页面中爬取结果数据,单页面任务对应的页面URL便是该页面的页面URL,该页面存在如下两种型式:一是,该页面为单独存在的一个页面;二是,该页面为存在关联的多层级页面中的最高层级页面。示例性的,如表-1所示,第一个爬取任务对应的URL为url1,该爬取任务仅对应一个单独存在页面,说明爬取任务仅从该单独存在页面中爬取数据,该单独存在页面为该爬取任务的爬取结果的来源页面。
具体的,对单页面任务对应的页面URL进行哈希计算,得到单页面任务对应的哈希编码。示例性的,表-1中的爬取任务1为爬取成功的爬取任务,且为单页面任务,则采用哈希算法对爬取任务1的url1进行哈希计算,得到爬取任务1对应的哈希编码为“123456”。
具体的,为了区分各爬取任务,则各爬取任务均具体其各自对应的任务标识,且各任务标识具有唯一性。示例性的,爬取任务1的任务标识为“任务1”。
具体的,根据单页面任务对应的哈希编码和任务标识生成爬取成功的爬取任务对应的结果标识的方法至少存在如下几种:
一是,按照预设的顺序拼接哈希编码和任务标识。拼接方式存在如下两种:一、任务标识位于哈希编码之前。示例性的,爬取任务1为单页面任务,其任务标识为“任务1”,哈希编码为“123456”,则该爬取任务1的结果标识为“任务1_123456”。二、哈希编码位于任务标识之前。示例性的,爬取任务1为单页面任务,其任务标识为“任务1”,哈希编码为“123456”,则该爬取任务的结果标识为“123456_任务1”。需要说明的是,拼接时任务标识和哈希编码之间可以存在连接符号,也可以不存在连接符号直接拼接。在采用连接符号,该连接符号的具体型式可以基于业务要求确定,本实施例不作具体限定,本实施例中采用的连接符号“_”仅为一个实例。
二是,采用预设的算法对哈希编码和任务标识进行运算,将运算结果作为单页面任务对应的结果标识。该运算过程至少包括如下两种:一是,采用相同的算法或不同的算法分别对哈希编码和任务标识进行运算,分别得到哈希编码和任务标识对应的运算结果,然后采用设定的拼接顺序拼接两个运算结果,将拼接结果作为单页面任务对应的结果标识。二是,采用设定的拼接顺序拼接哈希编码和任务标识,然后采用预设的算法对拼接结果进行运算,将运算结果确定为单页面任务对应的结果标识。
第二种,爬取成功的爬取任务对应的页面是存在关联的多层级页面时,结果标识的生成的方法为:获取每个爬取成功的爬取任务对应的任务标识;确定爬取任务为关联多页面任务,并获取每个关联多页面任务对应的页面URL,其中,关联的多层级页面中每一层级页面对应的URL中都包含其前一层级页面的页面标识;对关联多页面任务对应的页面URL进行哈希计算,得到对应的哈希编码;根据关联多页面任务对应的哈希编码和任务标识,生成每个关联多页面任务对应的结果标识。
具体的,本实施例所述的存在关联的多层级页面是指,除最低层级页面之外,每一层级页面中的链接被触发时,则进入到下一层级页面。需要说明的是,每一层级页面中可以具有一个或多个链接,也就是,每个层级页面可以对应一个或多个下一层级页面。
具体的,每一层级页面对应的URL都是基于其前一层及页面的页面标识衍生出来的,因此关联的多层级页面中每一层级页面对应的URL中都包含其前一层级页面的页面标识。示例性的,爬取结果的来源页面为第二层级页面,则第二级页面的页面URL中包括有第一层级页面的页面标识,且第二级页面的页面URL为“https://www.baidu.com/pageid1/pageid2”。
进一步的,为了体现爬取结果的来源路径,需要在爬取结果对应的结果标识中添加爬取结果来源页面之前各级页面的页面标识,爬取结果来源页面之前各级页面的页面标识应能体现出页面所处层级,以便根据页面标识,便可了解到爬取结果的来源路径。
具体的,为了能够从爬取任务的结果标识便能了解到爬取任务的爬取结果的来源,则关联多页面任务的结果标识的生成方法至少存在如下几种:
第一种,由于每一层级页面对应的URL中都包含其前一层级页面的页面标识,因此通过爬取结果来源页面便可以了解到爬取结果的来源路径,因此可以将爬取结果来源页面的页面URL确定为关联多页面任务对应的页面URL。对关联多页面任务对应的页面URL进行哈希计算,得到关联多页面任务对应的哈希编码;根据关联多页面任务的哈希编码和任务标识,生成关联多页面任务对应的结果标识。具体的,可以按照预设的顺序拼接哈希编码和任务标识得到结果标识,也可以采用预设的算法对哈希编码和任务标识进行运算,将运算结果作为关联多页面任务对应的结果标识。
第二种,由于每一层级页面对应的URL中都包含其前一层级页面的页面标识,因此确定每一层级页面对应的页面标识,按照各级页面的层级顺序,拼接各级页面的页面标识。并按照预设的顺序拼接哈希编码、任务标识和页面标识的拼接结果。拼接哈希编码、任务标识和页面标识的拼接结果的拼接顺序至少存在如下几种:一是,任务标识+页面标识的拼接结果+哈希编码;二是,任务标识+哈希编码+页面标识的拼接结果;三是,页面标识的拼接结果+哈希编码+任务标识;四是,页面标识的拼接结果+任务标识+哈希编码。
示例性的,爬取任务2为关联多页面任务,爬取结果从第三层级页面获取,则第三层级页面为爬取任务2的爬取结果的来源页面,该结果来源页面之前存在第二层级页面和第一层级页面,其中,第一层级页面为最高级页面。由于每一层级页面对应的URL中都包含其前一层级页面的页面标识,因此确定每一层级页面对应的页面标识为pageid1、pageid2和pageid3。爬取任务2对应的页面URL为“第三层级页面的页面URL”进行哈希计算,得到爬取任务2对应的哈希编码“78956”。按照各级页面的层级顺序,拼接各级页面的页面标识。并按照预设的顺序拼接哈希编码“78956”、任务标识“任务2”和页面标识的拼接结果“pageid1_pageid2_pageid3”,生成爬取任务2对应的结果标识为“任务2_pageid1_pageid2_pageid3_78956”。
第三种,将每一层级页面对应的URL均确定为关联多页面任务对应的页面URL,分别对关联多页面任务对应的页面URL进行哈希计算,得到对应的哈希编码。按照各级页面的层级顺序,拼接各级页面的哈希编码。最后按照预设的顺序拼接任务标识和哈希编码的拼接结果,得到关联多页面任务对应的结果标识。
102、根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务。
本实施例中,为了快速的确定出爬取任务配置表中失败的数据爬取任务,则在每次完成针对爬取任务配置表的爬取操作时,记录已爬取成功的爬取任务;基于爬取任务配置表和记录爬取成功的记录结果之间的差集,确定爬取任务配置表中爬取失败的爬取任务。需要说明的是,为了记录的爬取任务与实际爬取成功的爬取任务相一致,则对爬取失败的爬取任务重爬之后,需要及时记录重爬成功的爬取任务。若爬取任务配置表和记录爬取成功的记录结果之间的差集为空时,则爬取任务配置表中的爬取任务均爬取成功,爬取任务配置表中的爬取任务均全部完成。若爬取任务配置表和记录爬取成功的记录结果之间的差集中存在爬取任务,则将说明这些存在的爬取任务爬取失败,需要对这些爬取任务执行重爬操作。
示例性的,表-1为爬取任务配置表,表-2为在针对表-1的爬取任务配置表完成爬取操作时形成的记录结果。从表-1和表-2可以看出,爬取任务配置表中爬取失败的爬取任务为url3和url4,需要对爬取任务url3和url4执行重爬操作。
表-2
103、对爬取失败的爬取任务执行重爬操作,直至爬取成功。
本实施例中,当存在爬取失败的爬取任务时,对爬取失败的爬取任务执行重爬操作。重爬操作至少存在如下两种方式:
第一种,更换数据爬取系统对爬取失败的爬取任务执行重爬操作。当存在重爬成功的爬取任务时,记录重爬成功的爬取任务。当不存在重爬成功的爬取任务时,说明爬取任务的失败原因与数据爬取系统无关,可能是爬取任务对应的网站原因,即使再次重爬也不会爬取成功,因此执行报错处理,以便用户根据报错进行异常处理。同时结束针对爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
第二种,重新调用数据爬取系统对爬取失败的爬取任务执行重爬操作。当重爬次数在有限次内爬取成功时,记录重爬成功的爬取任务。当有限次重爬之后仍未重爬成功时,说明爬取任务的失败原因与数据爬取系统无关,可能是爬取任务对应的网站原因,即使再次重爬也不会爬取成功,因此执行报错处理,以便用户根据报错进行异常处理。同时结束针对爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
第三种,重新调用数据爬取系统对爬取失败的爬取任务执行重爬操作。当重爬时长未达到预设时长时,重爬成功,则记录重爬成功的爬取任务。当重爬时长达到预设时长时,仍未爬取成功,说明爬取任务的失败原因与数据爬取系统无关,可能是爬取任务对应的网站原因,即使再次重爬也不会爬取成功,因此执行报错处理,以便用户根据报错进行异常处理。同时结束针对爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
本实施例中记录重爬成功的爬取任务的方法与上述步骤101中记录爬取成功的爬取任务的方法基本相同,因此这里将不再赘述。
104、对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
本实施例中,由于爬取成功的爬取任务和重爬成功的爬取任务之间可能存在重复和关联关系,为了得到完整且清楚明确的爬取结果,则需要对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。爬取成功的爬取任务和重爬成功的爬取任务的爬取结果的具体步骤为:判断任务结果表中是否存在重爬成功的爬取任务的任务标识,其中,任务结果表用于记录已存在爬取结果的爬取任务的任务标识;若存在,更新重爬成功的爬取任务的爬取结果;否则,在所述任务结果表中添加重爬成功的爬取任务的任务标识。
具体的,任务结果表用于记录已存在爬取结果的爬取任务的任务标识。需要说明的是,该爬取结果至少存在三种情况:第一种,该爬取结果为爬取成功的爬取任务的结果。示例性的,表-1中爬取任务url1爬取成功,则表-3的任务结果表中记录爬取任务url1。第二种,该爬取结果为爬取失败的爬取任务的状态结果。示例性的,表-1中爬取任务url3爬取失败,状态结果为“网络故障”,则表-3的任务结果表中记录爬取任务url3。第三种,该爬取结果为爬取失败的爬取任务的部分爬取结果。示例性的,表-1中爬取任务url2爬取失败,爬取任务url2对应关联的两层级页面,此时仅得到了第一层级页面的爬取结果,而未得到第二层级页面的爬取结果,则表-3的任务结果表中记录爬取任务url2。另外,对于由于数据爬取系统故障未执行爬取操作的爬取任务,由于未得到针对这些爬取任务的爬取结果,则这些爬取任务的任务标识不被记录在任务结果表中。
表-3
具体的,在判断任务结果表中存在重爬成功的爬取任务的任务标识时,合并操作存在如下两种:
第一种,若任务结果表中的任务标识的记录原因是,得到爬取失败的爬取任务的状态结果。则合并时,为了避免爬取结果出现混乱,则更新重爬成功的爬取任务的爬取结果。另外,为了使得任务结果表中的记录的内容与实际爬取结果一致,则需要及时更新任务结果表。
第二种,若任务结果表中的任务标识的记录原因是,得到爬取失败的爬取任务的部分爬取结果。则根据爬取任务的结果标识中包含的页面标识,匹配爬取成功的爬取任务和重爬成功的爬取任务的爬取结果;将含有同一最高层级页面的页面标识的爬取结果进行合并。
具体的,在判断任务结果表中不存在重爬成功的爬取任务的任务标识时,说明之前并未得到该爬取任务的爬取结果,为了保证针对爬取任务配置表的爬取结果的完整性,则在任务结果表中添加重爬成功的爬取任务的任务标识,对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果合并到一起。
进一步的,为了使用户可以及时了解针对爬取任务配置表的爬取结果,则若接收到针对爬取任务配置表的爬取结果查看请求时,则调取爬取任务配置表中已成功的爬取任务的爬取结果供用户查看。此种方式,用户无需等待爬取任务配置表中均爬取完成,便能及时查看到已成功的数据爬取任务的爬取结果数据。
本发明实施例提供的一种数据爬取方法,根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务。然后根据爬取任务配置表和记录结果之间的差集,确定爬取失败的爬取任务。对爬取失败的爬取任务执行重爬操作直至爬取成功。对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。通过上述可知,本发明实施例提供的方案通过爬取任务配置表和记录爬取成功的爬取任务的记录结果之间的差集,便可以及时确定出爬取失败的爬取任务,并对爬取失败进行重爬处理。为了避免爬取结果出现混乱,对爬取成功的爬取任务和重爬成功的爬取任务的爬取进行合并处理。可见,本发明实施例提供的方案在快速识别爬取失败的爬取任务的基础上,能够快速合并爬取任务的新旧爬取结果。
进一步的,根据图1所示的方法,本发明的另一个实施例还提供了一种爬取数据的合并方法,如图2所示,所述方法主要包括:
201、根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务。
202、根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务。
203、判断爬取失败的爬取任务的失败原因是否为数据爬取系统故障;如果是,执行204;否则,执行208。
本实施例中,由于爬取失败的爬取任务的失败原因为被爬网站网络故障、被爬网站瘫痪和被爬网站URL失效等被爬网站导致时,即使对爬取任务进行重爬操作,也不能爬取成功。仅有对失败原因为数据爬取系统故障的爬取任务进行重爬操作时,才有可能爬取成功。因此为了减少无效的重爬操作,则在确定出爬取失败的爬取任务之后,需要判断爬取失败的爬取任务的失败原因是否为数据爬取系统故障。
204、对爬取失败的爬取任务执行重爬操作。
本实施例中,在爬取任务的失败原因为数据爬取系统故障时,则可以通过调整或更换数据爬取系统的方式,对爬取失败的爬取任务执行重爬操作。
205、判断是否重爬成功,若是,执行209;否则,执行206。
206、判断爬取失败的爬取任务执行重爬操作的次数是否达到预设次数阈值,若达到,执行207;否则,执行204。
本实施例中,为了避免在爬取出现不能爬取数据的错误时,无休止的对爬取任务进行重爬操作,则需要判断爬取失败的爬取任务执行重爬操作的次数是否达到预设次数阈值。在爬取失败的爬取任务执行重爬操作的次数达到预设次数阈值时,说明爬取任务不能完成概率较高,则执行207。在爬取失败的爬取任务执行重爬操作的次数未达到预设次数阈值时,说明爬取任务还存在被爬取成功的概率,则执行204。
207、结束针对爬取失败的爬取任务的重爬操作,并发出针对爬取失败的爬取任务的失败通知和/或返回爬取成功的爬取任务的爬取结果。
本实施例中,为了使用户及时了解到爬取任务爬取失败的状况,则发出针对爬取失败的爬取任务的失败通知,以便使用户及时进行相关的应急处理。
208、返回失败原因对应的错误状态码,并结束针对所述爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
209、对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
本实施例中,在爬取任务的失败原因不是数据爬取系统故障时,为了减少无效的重爬操作,则返回失败原因对应的错误状态码,以便使得用户通过错误状态码了解爬取任务为何爬取失败。在爬取任务的失败原因为“网页的URL失效”时,则返回的错误状态码为404。在爬取任务的失败原因为“IWAM账号的密码错误”,则返回的错误状态码为500。
进一步的,依据上述方法实施例,本发明的另一个实施例还提供了一种数据爬取装置,如图3所示,所述装置包括:
记录单元31,用于根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
确定单元32,用于根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
重爬单元33,用于对爬取失败的爬取任务执行重爬操作,直至爬取成功;
合并单元34,用于对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
本发明实施例提供的一种数据爬取装置,根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务。然后根据爬取任务配置表和记录结果之间的差集,确定爬取失败的爬取任务。对爬取失败的爬取任务执行重爬操作直至爬取成功。对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。通过上述可知,本发明实施例提供的方案通过爬取任务配置表和记录爬取成功的爬取任务的记录结果之间的差集,便可以及时确定出爬取失败的爬取任务,并对爬取失败进行重爬处理。为了避免爬取结果出现混乱,对爬取成功的爬取任务和重爬成功的爬取任务的爬取进行合并处理。可见,本发明实施例提供的方案在快速识别爬取失败的爬取任务的基础上,能够快速合并爬取任务的新旧爬取结果。
可选的,如图4所示,所述装置还包括:
判断单元35,用于判断爬取失败的爬取任务的失败原因是否为数据爬取系统故障,如果是,触发所述重爬单元33,否则,触发返回单元36;
所述重爬单元33,用于在所述判断单元35的触发下,对爬取失败的爬取任务执行重爬操作;
所述返回单元36,用于在所述判断单元35的触发下,返回失败原因对应的错误状态码,并结束针对所述爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
可选的,如图4所示,所述记录单元31,用于为各爬取成功的爬取任务分别对应添加结果标识。
可选的,如图4所示,所述装置还包括:
第一获取单元311,用于获取每个爬取成功的爬取任务对应的任务标识;
第二获取单元312,用于如果所述爬取成功的爬取任务对应的页面为单页面,则确定所述爬取任务为单页面任务,并获取所述单页面任务对应的页面URL;
第一计算单元313,用于对所述单页面任务对应的页面URL进行哈希计算,得到所述单页面任务对应的哈希编码;
第一生成单元314,用于根据所述单页面任务对应的哈希编码和所述任务标识,生成所述单页面任务对应的结果标识。
可选的,如图4所示,所述装置还包括:
第三获取单元315,用于获取每个爬取成功的爬取任务对应的任务标识;
第四获取单元316,用于如果所述爬取成功的爬取任务对应的页面是存在关联的多层级页面,则确定所述爬取任务为关联多页面任务,并获取每个所述关联多页面任务对应的页面URL,其中,所述关联的多层级页面中每一层级页面对应的URL中都包含其前一层级页面的页面标识;
第二计算单元317,用于对所述关联多页面任务对应的页面URL进行哈希计算,得到对应的哈希编码;
第二生成单元318,用于根据所述关联多页面任务对应的哈希编码和所述任务标识,生成每个所述关联多页面任务对应的结果标识。
可选的,如图4所示,所述合并单元34,包括:
匹配模块341,用于根据爬取任务的结果标识中包含的页面标识,匹配爬取成功的爬取任务和重爬成功的爬取任务的爬取结果;
合并模块342,用于将含有同一最高层级页面的页面标识的爬取结果进行合并。
可选的,如图4所示,所述合并单元,包括:
判断模块343,用于判断任务结果表中是否存在重爬成功的爬取任务的任务标识,其中,所述任务结果表用于记录已存在爬取结果的爬取任务的任务标识;若存在,触发更新模块344,否则,触发添加模块345;
所述更新模块344,用于在所述判断模块343的触发下,更新重爬成功的爬取任务的爬取结果;
所述添加模块345,用于在所述判断模块343的触发下,在所述任务结果表中添加重爬成功的爬取任务的任务标识。
可选的,如图4所示,所述装置还包括:
停止单元37,用于若爬取失败的爬取任务执行重爬操作的次数达到预设次数阈值时,结束针对爬取失败的爬取任务的重爬操作,并发出针对爬取失败的爬取任务的失败通知和/或返回爬取成功的爬取任务的爬取结果。
可选的,如图4所示,所述装置还包括:
调取单元38,用于若接收到针对爬取任务配置表的爬取结果查看请求时,则调取所述爬取任务配置表中已成功的爬取任务的爬取结果。
所述数据爬取装置包括处理器和存储器,上述记录单元、确定单元、重爬单元、合并单元、判断单元、返回单元、第一确定单元、第一计算单元、第一生成单元、第二确定单元、第二计算单元、第二生成单元、停止单元和调取单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来在快速识别爬取失败的爬取任务的基础上,快速合并爬取任务的新旧爬取结果。
本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现所述数据爬取方法。
本发明实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述数据爬取方法。
本发明实施例提供了一种设备,如图5所示,设备包括至少一个处理器41、以及与处理器41连接的至少一个存储器42、总线43;其中,处理器41、存储器42通过总线43完成相互间的通信;处理器41用于调用存储器42中的程序指令,以执行上述的数据爬取方法。本文中的设备可以是服务器、PC、PAD、手机等。
本发明实施例还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:
根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
对爬取失败的爬取任务执行重爬操作,直至爬取成功;
对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
可选的,在对爬取失败的爬取任务执行重爬操作之前,所述方法还包括:
判断爬取失败的爬取任务的失败原因是否为数据爬取系统故障;
如果是,对爬取失败的爬取任务执行重爬操作;
否则,返回失败原因对应的错误状态码,并结束针对所述爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
可选的,记录爬取成功的爬取任务,包括:
为各爬取成功的爬取任务分别对应添加结果标识。
可选的,在为各爬取成功的爬取任务分别对应添加结果标识之前,所述方法还包括:通过以下方法生成所述结果标识:
获取每个爬取成功的爬取任务对应的任务标识;
如果所述爬取成功的爬取任务对应的页面为单页面,则确定所述爬取任务为单页面任务,并获取所述单页面任务对应的页面URL;
对所述单页面任务对应的页面URL进行哈希计算,得到所述单页面任务对应的哈希编码;
根据所述单页面任务对应的哈希编码和所述任务标识,生成所述单页面任务对应的结果标识。
可选的,在为各爬取成功的爬取任务分别对应添加结果标识之前,所述方法还包括:通过以下方法生成所述结果标识:
获取每个爬取成功的爬取任务对应的任务标识;
如果所述爬取成功的爬取任务对应的页面是存在关联的多层级页面,则确定所述爬取任务为关联多页面任务,并获取每个所述关联多页面任务对应的页面URL,其中,所述关联的多层级页面中每一层级页面对应的URL中都包含其前一层级页面的页面标识;
对所述关联多页面任务对应的页面URL进行哈希计算,得到对应的哈希编码;
根据所述关联多页面任务对应的哈希编码和所述任务标识,生成每个所述关联多页面任务对应的结果标识。
可选的,对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并,包括:
根据爬取任务的结果标识中包含的页面标识,匹配爬取成功的爬取任务和重爬成功的爬取任务的爬取结果;
将含有同一最高层级页面的页面标识的爬取结果进行合并。
可选的,对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并,包括:
判断任务结果表中是否存在重爬成功的爬取任务的任务标识,其中,所述任务结果表用于记录已存在爬取结果的爬取任务的任务标识;
若存在,更新重爬成功的爬取任务的爬取结果;
否则,在所述任务结果表中添加重爬成功的爬取任务的任务标识。
可选的,所述方法还包括:
若爬取失败的爬取任务执行重爬操作的次数达到预设次数阈值时,结束针对爬取失败的爬取任务的重爬操作,并发出针对爬取失败的爬取任务的失败通知和/或返回爬取成功的爬取任务的爬取结果。
可选的,所述方法还包括:
若接收到针对爬取任务配置表的爬取结果查看请求时,则调取所述爬取任务配置表中已成功的爬取任务的爬取结果。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
在一个典型的配置中,设备包括一个或多个处理器(CPU)、存储器和总线。设备还可以包括输入/输出接口、网络接口等。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种数据爬取方法,其特征在于,包括:
根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
对爬取失败的爬取任务执行重爬操作,直至爬取成功;
对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
2.根据权利要求1所述的方法,其特征在于,在对爬取失败的爬取任务执行重爬操作之前,所述方法还包括:
判断爬取失败的爬取任务的失败原因是否为数据爬取系统故障;
如果是,对爬取失败的爬取任务执行重爬操作;
否则,返回失败原因对应的错误状态码,并结束针对所述爬取任务配置表的爬取操作和/或返回爬取成功的爬取任务的爬取结果。
3.根据权利要求1所述的方法,其特征在于,记录爬取成功的爬取任务,包括:
为各爬取成功的爬取任务分别对应添加结果标识。
4.根据权利要求3所述的方法,其特征在于,在为各爬取成功的爬取任务分别对应添加结果标识之前,所述方法还包括:通过以下方法生成所述结果标识:
获取每个爬取成功的爬取任务对应的任务标识;
如果所述爬取成功的爬取任务对应的页面为单页面,则确定所述爬取任务为单页面任务,并获取所述单页面任务对应的页面URL;
对所述单页面任务对应的页面URL进行哈希计算,得到所述单页面任务对应的哈希编码;
根据所述单页面任务对应的哈希编码和所述任务标识,生成所述单页面任务对应的结果标识;
和/或,
获取每个爬取成功的爬取任务对应的任务标识;
如果所述爬取成功的爬取任务对应的页面是存在关联的多层级页面,则确定所述爬取任务为关联多页面任务,并获取每个所述关联多页面任务对应的页面URL,其中,所述关联的多层级页面中每一层级页面对应的URL中都包含其前一层级页面的页面标识;
对所述关联多页面任务对应的页面URL进行哈希计算,得到对应的哈希编码;
根据所述关联多页面任务对应的哈希编码和所述任务标识,生成每个所述关联多页面任务对应的结果标识。
5.根据权利要求4所述的方法,其特征在于,对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并,包括:
根据爬取任务的结果标识中包含的页面标识,匹配爬取成功的爬取任务和重爬成功的爬取任务的爬取结果;
将含有同一最高层级页面的页面标识的爬取结果进行合并;
和/或,
对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并,包括:
判断任务结果表中是否存在重爬成功的爬取任务的任务标识,其中,所述任务结果表用于记录已存在爬取结果的爬取任务的任务标识;
若存在,更新重爬成功的爬取任务的爬取结果;
否则,在所述任务结果表中添加重爬成功的爬取任务的任务标识。
6.根据权利要求1-5中任一所述的方法,其特征在于,所述方法还包括:
若爬取失败的爬取任务执行重爬操作的次数达到预设次数阈值时,结束针对爬取失败的爬取任务的重爬操作,并发出针对爬取失败的爬取任务的失败通知和/或返回爬取成功的爬取任务的爬取结果。
7.根据权利要求1-6中任一所述的方法,其特征在于,所述方法还包括:
若接收到针对爬取任务配置表的爬取结果查看请求时,则调取所述爬取任务配置表中已成功的爬取任务的爬取结果。
8.一种数据爬取装置,其特征在于,包括:
记录单元,用于根据爬取任务配置表执行数据爬取操作,并记录爬取成功的爬取任务;
确定单元,用于根据所述爬取任务配置表和记录结果,确定爬取失败的爬取任务;
重爬单元,用于对爬取失败的爬取任务执行重爬操作,直至爬取成功;
合并单元,用于对爬取成功的爬取任务和重爬成功的爬取任务的爬取结果进行合并。
9.一种存储介质,其特征在于,其上存储有程序,该程序被处理器执行时实现权利要求1-7中任一所述的数据爬取方法。
10.一种设备,其特征在于,设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,处理器、存储器通过总线完成相互间的通信;处理器用于调用存储器中的程序指令,以执行权利要求1-7中任一所述的数据爬取方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945088.7A CN112579858A (zh) | 2019-09-30 | 2019-09-30 | 一种数据爬取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910945088.7A CN112579858A (zh) | 2019-09-30 | 2019-09-30 | 一种数据爬取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112579858A true CN112579858A (zh) | 2021-03-30 |
Family
ID=75116700
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910945088.7A Pending CN112579858A (zh) | 2019-09-30 | 2019-09-30 | 一种数据爬取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112579858A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780822A (zh) * | 2022-06-20 | 2022-07-22 | 云账户技术(天津)有限公司 | 爬取应用程序数据的方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106126648A (zh) * | 2016-06-23 | 2016-11-16 | 华南理工大学 | 一种基于重做日志的分布式商品信息爬虫方法 |
CN106445966A (zh) * | 2015-08-11 | 2017-02-22 | 北京国双科技有限公司 | 一种数据获取方法和装置 |
US20170068735A1 (en) * | 2015-09-08 | 2017-03-09 | MOLBASE (Shanghai) Biotechnology Co., Ltd . | Task-crawling system and task-crawling method for distributed crawler system |
CN107025230A (zh) * | 2016-01-29 | 2017-08-08 | 北京国双科技有限公司 | 网络爬虫的处理方法及装置 |
CN107045507A (zh) * | 2016-02-05 | 2017-08-15 | 北京国双科技有限公司 | 网页爬取方法及装置 |
WO2019127881A1 (zh) * | 2017-12-30 | 2019-07-04 | 平安科技(深圳)有限公司 | 网页数据处理方法、装置、计算机设备及计算机存储介质 |
-
2019
- 2019-09-30 CN CN201910945088.7A patent/CN112579858A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445966A (zh) * | 2015-08-11 | 2017-02-22 | 北京国双科技有限公司 | 一种数据获取方法和装置 |
US20170068735A1 (en) * | 2015-09-08 | 2017-03-09 | MOLBASE (Shanghai) Biotechnology Co., Ltd . | Task-crawling system and task-crawling method for distributed crawler system |
CN107025230A (zh) * | 2016-01-29 | 2017-08-08 | 北京国双科技有限公司 | 网络爬虫的处理方法及装置 |
CN107045507A (zh) * | 2016-02-05 | 2017-08-15 | 北京国双科技有限公司 | 网页爬取方法及装置 |
CN106126648A (zh) * | 2016-06-23 | 2016-11-16 | 华南理工大学 | 一种基于重做日志的分布式商品信息爬虫方法 |
WO2019127881A1 (zh) * | 2017-12-30 | 2019-07-04 | 平安科技(深圳)有限公司 | 网页数据处理方法、装置、计算机设备及计算机存储介质 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114780822A (zh) * | 2022-06-20 | 2022-07-22 | 云账户技术(天津)有限公司 | 爬取应用程序数据的方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111104392B (zh) | 一种数据库迁移方法、装置、电子设备及存储介质 | |
CN107483221B (zh) | 一种跨应用问题排查方法、装置及系统 | |
CN107633016B (zh) | 数据处理方法及装置和电子设备 | |
CN107992738B (zh) | 一种账号登录异常检测方法、装置及电子设备 | |
CN111046310B (zh) | 页面处理方法、装置、服务器及计算机可读存储介质 | |
US10979532B2 (en) | Resource download method, electronic device, and apparatus | |
CN112202633B (zh) | 区块链网络的测试方法、装置、电子设备及可读存储介质 | |
CN111240892B (zh) | 数据备份方法及装置 | |
KR102242219B1 (ko) | 서버가 공격받는 것을 막기 위한 방법 및 디바이스 | |
CN111245897A (zh) | 数据处理方法、装置、系统、存储介质及处理器 | |
US9686310B2 (en) | Method and apparatus for repairing a file | |
CN114528201A (zh) | 异常代码定位方法、装置、设备及介质 | |
US9477769B2 (en) | Method and system for detecting original document of web document, method and system for providing history information of web document for the same | |
KR102393913B1 (ko) | 이상행위 탐지 장치, 방법 및 이를 포함하는 시스템 | |
CN112579858A (zh) | 一种数据爬取方法及装置 | |
CN110647463B (zh) | 一种恢复测试断点的方法、装置、电子设备 | |
CN106611118B (zh) | 申请登录凭证的方法和装置 | |
CN111885088A (zh) | 基于区块链的日志监测方法及装置 | |
CN111435327B (zh) | 一种日志记录的处理方法、装置及系统 | |
US20190132348A1 (en) | Vulnerability scanning of attack surfaces | |
CN109740386B (zh) | 一种静态资源文件的检测方法及装置 | |
CN111949479B (zh) | 交互系统和索引创建情况的确定方法、设备 | |
KR101999130B1 (ko) | 엔드포인트 dlp를 위한 2계층 기반의 기밀 정보 검출 시스템 및 방법 | |
CN108573155B (zh) | 检测漏洞影响范围的方法、装置、电子设备及存储介质 | |
CN110971578B (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 |