CN113434748A - 基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 - Google Patents
基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 Download PDFInfo
- Publication number
- CN113434748A CN113434748A CN202110813832.5A CN202110813832A CN113434748A CN 113434748 A CN113434748 A CN 113434748A CN 202110813832 A CN202110813832 A CN 202110813832A CN 113434748 A CN113434748 A CN 113434748A
- Authority
- CN
- China
- Prior art keywords
- information
- template
- target
- css
- extraction
- 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
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000000605 extraction Methods 0.000 claims abstract description 124
- 238000002372 labelling Methods 0.000 claims abstract description 31
- 230000014509 gene expression Effects 0.000 claims description 59
- 238000004590 computer program Methods 0.000 claims description 20
- 238000005070 sampling Methods 0.000 abstract 1
- 238000012795 verification Methods 0.000 description 11
- 230000006870 function Effects 0.000 description 6
- 230000008569 process Effects 0.000 description 6
- 239000012535 impurity Substances 0.000 description 4
- 230000009193 crawling Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000009191 jumping Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- VYZAMTAEIAYCRO-UHFFFAOYSA-N Chromium Chemical compound [Cr] VYZAMTAEIAYCRO-UHFFFAOYSA-N 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013481 data capture Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
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/953—Querying, e.g. by the use of web search engines
-
- 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/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
- G06F40/186—Templates
Abstract
本发明公开一种基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质,该方法包括:标注目标网页所需抽取的信息项,分别为每个信息项获取两个以上的抽取信息样例;分别根据获取的取信息样例为标注的每个信息项生成对应的信息抽取通式;根据各信息项对应的信息抽取通式以及所需的网页信息生成信息抽取模板;当接收到爬虫任务时,读取信息抽取模板进行信息抽取。本发明能够实现分布式的网页信息抽取,具有实现操作方法简单、爬虫效率以及精度高、通用性及稳定性好等优点。
Description
技术领域
本发明涉及网络爬虫技术领域,尤其涉及一种基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质。
背景技术
针对网页信息的抽取,传统方法采用代码硬编码的方式实现,即在代码中硬编码进行信息抽取,但是这类硬编码的方式不仅效率低,而且通用性、稳定性差,若网页结构发生改变,则需要重新修改爬虫代码并重新部署,费时费力。
基于上述问题,目前通常采用抽取逻辑模板的方式,即根据不同网站手动编写相应的抽取逻辑模板,且模板与代码分离,爬虫系统再通过服务进行模板读取。但是这类抽取逻辑模板的方式仍然会存在以下问题:
1、抽取模板一般是采用xml或json格式,模型编码量大、编码复杂,网页重要信息抽取过程繁琐,而且易于出现格式错误等问题,一旦发生格式等错误即会导致爬虫抽取信息失败,影响信息抽取的成功率;
2、针对每一个网站都需要编写相应的不同的抽取逻辑,不具有通用性,且稳定性仍然较差,若网页结构发生改变,仍然需要重新编码抽取逻辑,爬虫效率仍然不高。尤其是当应用于对大量不同的网站同时进行爬虫时,由于需要针对各不同网站构建大量的抽取逻辑,信息抽取效率会大大降低,造成爬虫效率低下。
如使用Java语言实现爬虫系统时,一般是使用jsoup库针对各个网站编写不同的抽取逻辑代码,该抽取逻辑代码通常就需要耗费大量的时间、精力编写完成。
有从业者提出基于数据信息模板构建的方式来实现网页爬虫,以实现特定数据信息的爬取,即通常是先根据用户提供的想要抓取某领域的数据信息,然后依据分词工具、特定算法等进行模型构建,再分析网页结构形成模板进行抽取。但是该类方式仅能够实现特定类型数据信息爬虫,而无法同时实现多类不同数据信息抽取,且由于是直接基于所需抓取的数据信息进行模型构建,不仅实现复杂,且仍然缺乏通用性、稳定性,对于不同的数据信息、不同网页需要相应构建不同的模板,因而应用于大量不同的网页爬虫时,需要重复构建大量的模板,爬虫效率仍然不高。
综上,目前爬虫系统采用硬编码或抽取逻辑模板等方式,不仅实现操作复杂,且还会存在通用性及稳定性差、信息抽取效率低等问题,尤其是当应用于大量不同的网页爬虫时,就难以高效的实现不同网页的通用性爬虫。因此亟需提供一种网络爬虫方法,以在降低爬虫实现复杂度的同时,能够确保爬虫系统的通用性、稳定性以及效率。
发明内容
本发明要解决的技术问题在于:针对现有技术存在的技术问题,本发明提供一种实现操作方法简单、爬虫效率以及精度高、通用性及稳定性好的基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质。
为解决上述技术问题,本发明提出的技术方案为:
一种基于模板标注的分布式爬虫方法,步骤包括:
标注目标网页所需抽取的信息项,分别为各所述信息项获取至少两个抽取信息样例;
根据所述抽取信息样例,分别为各所述信息项生成对应的信息抽取通式;
根据各所述信息项对应的所述信息抽取通式以及所需的网页信息生成信息抽取模板;
当接收到爬虫任务时,读取所述信息抽取模板进行信息抽取。
进一步的,所述根据获取的所述抽取信息样例为所述标注的每个信息项生成对应的信息抽取通式,包括:
查找所述信息项对应的所述抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围;
从所述信息项对应的各所述抽取信息样例中选取一个作为目标抽取信息样例;
对所述目标抽取信息样例中所述目的位置范围内的字符串进行移除处理,生成得到目的信息项对应的所述信息抽取通式。
进一步的,所述查找获取的各所述抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围,包括:
查找目的信息项所对应的各所述抽取信息样例中HTML标签层级结构不一致的起始位置;
从所述起始位置开始,查找目的信息项所对应的各所述抽取信息样例中HTML标签层级结构不一致的结束位置;
由从所述起始位置至所述结束位置之间的位置范围得到所述目的位置范围。
进一步的,所述从所述起始位置开始,查找目的信息项所对应的各所述抽取信息样例中HTML标签层级结构不同的结束位置之后,还包括根据所述起始位置、所述结束位置之间的前后位置关系进行校验,当所述起始位置与所述结束位置之间的前后位置关系符合预设条件时判定校验通过。
进一步的,所述对目标抽取信息样例中所述目的位置范围内的字符串进行移除处理包括:对所述目标抽取信息样例中所述目的位置范围内的目的字符串,以及所述目的字符串所在的标签层级表达式中除标签以外的字符串进行删除和/或替换为预设字符,所述标签层级表达式为用于表示HTML标签层级所在位置的表达式。
进一步的,所述抽取信息样例为标注的信息项的CSS表达式,所述信息抽取通式为根据标注的信息项对应的两个以上的CSS表达式生成的CSS通式。
进一步的,根据所述CSS表达式生成CSS通式包括:
获取目的信息项对应的各所述CSS表达式中字符串长度最短的字符串长度值length;
顺序遍历目的信息项对应的一个所述CSS表达式中的字符串,且遍历的字符串长度值取为所述最短的字符串长度值length,每当查找到各所述CSS表达式中HTML标签层级结构不一致的目的字符时,取目的字符前的第一预设字符时为查找出的各所述CSS表达式中HTML标签层级结构不一致的起始位置;
从所述起始位置开始继续遍历目的信息项对应的各所述CSS表达式中剩余各个字符,直到查找到第二预设字符时,判定查找出各所述抽取信息样例中HTML标签层级结构不一致的结束位置;
从所述信息项对应的各所述CSS表达式中选取一个目的CSS表达式,对目的CSS表达式中从所述起始位置到所述结束位置间的目的字符串,以及所述目的字符串所在的CSS选择器对应的字符串进行移除处理,生成所述信息项对应的所述CSS通式。
一种基于模板标注的分布式爬虫装置,包括:
信息标注模块,用于标注目标网页所需抽取的信息项,分别为各所述信息项获取至少两个抽取信息样例;
通式生成模块,用于根据所述抽取信息样例,分别为各所述信息项生成对应的信息抽取通式;
模板生成模块,用于根据各所述信息项对应的所述信息抽取通式以及所需的网页信息生成信息抽取模板;
分布式爬虫模块,用于当接收到爬虫任务时,读取所述信息抽取模板进行信息抽取。
一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,所述处理器用于执行所述计算机程序,以执行如上述方法。
一种存储有计算机程序的计算机可读存储介质,所述计算机程序执行时实现如上述方法。
与现有技术相比,本发明的优点在于:
1、本发明基于模板标注实现分布式的爬虫抓取,通过先对目标网页所需抽取的信息项进行标注,为每个信息项获取抽取信息样例,由抽取信息样例生成信息抽取通式,再基于信息抽取通式与网页信息生成信息抽取模板,在执行爬虫任务时,通过读取信息抽取模板即可自动的实现各类不同网站中所需信息的通用爬虫,而无需重复构建抽取模板,可以实现不同网站的通用爬虫抓取,尤其是当应用于同时对大量网站爬虫抓取时,能显著提升爬虫抓取效率,大大减少爬虫系统的开发维护成本。
2、本发明基于信息抽取模板实现分布式爬虫抓取,可以方便地修改信息抽取模板中网页信息,即便网站结构发生改变,只需要对模板进行简单的修改操作,可以大大提升网页爬虫的通用性及稳定性。
附图说明
图1是本发明实施例1基于模板标注的分布式爬虫方法的实现流程示意图。
图2是本发明实施例1中信息抽取模板的结构原理示意图。
图3是本发明实施例1中生成信息抽取通式的流程示意图。
图4是本发明实施例1中基于模板标注的分布式爬虫装置的结构原理示意图。
图5是本发明实施例1中基于模板标注的分布式爬虫系统的结构原理示意图。
图6是本发明在具体应用实施例(实施例2)中基于模板标注实现分布式爬虫方法的详细流程示意图。
具体实施方式
以下结合说明书附图和具体优选的实施例对本发明作进一步描述,但并不因此而限制本发明的保护范围。
实施例1:
如图1所示,本实施例基于模板标注的分布式爬虫方法的步骤包括:
步骤S1.标注目标网页所需抽取的信息项,分别为各信息项获取至少两个抽取信息样例;
步骤S2.根据抽取信息样例,分别为各信息项生成对应的信息抽取通式;
步骤S3.根据各信息项对应的信息抽取通式以及所需的网页信息生成信息抽取模板;
步骤S4.当接收到爬虫任务时,读取信息抽取模板进行信息抽取。
本实施例通过先对目标网页所需抽取的信息项进行标注,为标注的每个信息项获取两个以上的抽取信息样例,由各抽取信息样例生成信息抽取通式,再基于该信息抽取通式与所需网页信息生成信息抽取模板,能够基于模板标注实现分布式的通用爬虫抓取,由于信息抽取通式能够通用的在抓取列表页后自动抽取所需信息,在执行爬虫任务时,通过读取信息抽取模板即可自动的实现各类不同网站中所需信息的通用爬虫,而无需重复构建抽取模板,即便网站结构发生改变,也只需要对模板进行简单的修改操作,能显著提升爬虫通用性、稳定性以及抓取效率,大大减少爬虫系统的开发维护成本。
上述为标注的信息项获取的各抽取信息样例中,具体针对所需信息项,由各抽取信息样例唯一指定同一个列表页中不同HTML标签,各抽取信息样例中的结构基本一致,仅是在标注项所处层级中指定了索引表示不同的HTML标签(即为表示特定信息的部分),如通过某一层节点表明该节点处于不同的层级。优选的,为标注的每个信息项取两个抽取信息样例,由该两个抽取信息样例来生成信息抽取通式,可以确保生成效率,当然也可以根据实际需求取多个抽取信息样例以提高信息抽取通式生成的性能。信息抽取通式为移除各抽取信息样例中表示特定信息的部分、保留通用信息的部分所生成得到的,因而基于各信息项对应的信息抽取通式可以通用的自动抽取不同网页中对应信息。
在具体应用实施例中,步骤S1具体可采用Chrome插件配置实现标注工具功能,以实现对网页信息的标注,该类标注工具安装使用便捷,且可以实现所见即所得的方式,用户可直接在浏览器中对所需要的信息项直观、高效地进行标注,进而可进一步确保信息抽取的精准性。可以理解的是,标注工具以及标注方式当然也可以根据实际需求采用其他方式实现。
本实施例中上述抽取的信息项可以为标题、作者、发表时间以及其他所需信息等,具体可以根据实际需求增加更多的信息项或进行灵活组合配置。如可以采用标注工具对目标网页中的标题、作者、发表时间等信息项进行标注,分别为标注的各信息项获取两个抽取信息样例,后续基于抽取信息样例生成信息抽取通式后,按照图2形成信息抽取模板以在抓取列表页后能够自动抽取网页中标题、作者、发表时间等各项信息。
在一个实施例中,如图3所示,步骤S2的步骤包括:
步骤S201.查找信息项对应的抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围;
步骤S202.从信息项对应的各抽取信息样例中选取一个作为目标抽取信息样例;
步骤S203.对目标抽取信息样例中目的位置范围内的字符串进行移除处理,生成得到目的信息项对应的信息抽取通式。
对于唯一指定同一个列表页中不同HTML标签的两个抽取信息样例,该两个抽取信息样例的结构通常是非常相似的,仅是在标注项所处层级中指定了索引表示不同的HTML标签,如通过某一层节点表明该节点处于不同的层级,该部分内容也即为需要滤除的“杂质”,信息抽取通式形成的过程也即为移除该“杂质”的过程。本实施例通过查找各抽取信息样例中表示特定信息的部分的位置范围,对抽取信息样例中该位置范围内的字符串进行移除处理,即可以高效的生成信息抽取通式。
在一个实施例中,上述步骤S201的步骤包括:
步骤S211.查找目的信息项所对应的各抽取信息样例中HTML标签层级结构不一致的起始位置;
步骤S212.从起始位置开始,查找目的信息项所对应的各抽取信息样例中HTML标签层级结构不一致的结束位置;
步骤S213.由从起始位置至结束位置之间的位置范围得到目的位置范围。
上述步骤通过查找各抽取信息样例中索引不一致位置、HTML标签层级结构不同位置之间的位置范围,可以依据抽取信息样例的层级结构特性,精准查找出抽取信息样例中表示特定信息的部分以进行移除,从而形成可用于后续信息抽取的信息抽取通式。
上述步骤S212后、步骤S213前还包括根据起始位置、结束位置之间的前后位置关系进行校验步骤,校验步骤中当所述起始位置与所述结束位置之间的前后位置关系符合预设条件时判定校验通过,如按照起始位置与结束位置不为0、结束位置必须在起始位置之后等的判断原则校验前述步骤的有效性,判断原则具体可以根据实际需求配置,如果校验未通过,则控制退出,停止当前爬虫任务,还可以进一步在校验未通过时配置输出校验错误信息。
上述步骤S202中具体取各抽取信息样例中长度最短的抽取信息样例作为目标抽取信息样例,即以长度更短的抽取信息样例来形成信息抽取通式,确保最终信息抽取通式的长度更短、更简洁。
上述步骤S202中,对目标抽取信息样例中目的位置范围内的字符串进行移除处理具体为对目标抽取信息样例中目的位置范围内的字符串、以及目的字符串所在的标签层级表达式中除标签以外的字符串进行删除,也可以替换为预设字符等的方式,预设字符可以使用如空格等特定字符,还可以采用将目标抽取信息样例中目的位置范围内的字符串删除后,将目标抽取信息样例中目的位置范围内的字符串、以及目的字符串所在的标签层级表达式中除标签以外的字符串整体替换为空格等预设字符,具体可根据实际需求设置。标签层级表达式包括标签以及用于确定标签层级所在位置的表达式,其中使用索引表示具体位置,上述查找到的目的位置范围内的字符串实际即为该用于确定标签层级所在位置的表达式中的索引,对于结构不一致的HTML标签层级结构,整个用于确定标签层级所在位置的表达式即为形成通式时需要去除的“杂质”,因而通过去除各抽取样例中该表示标签层级不同位置的表达式即可形成信息抽取通式。
本实施例通过先查找信息项对应的各抽取信息样例中索引不一致的起始位置,然后从起始位置查找各抽取信息样例中HTML标签层级结构不同的结束位置,从各抽取信息样例中选取一个作为目标抽取信息样例后,对目标抽取信息样例中从起始位置至结束位置之间的字符串进行移除处理,以移除抽取信息样例中表示特定信息的部分,生成最终的信息抽取通式,能够快速、高效的形成精准的信息抽取通式。
在一个实施例中,上述抽取信息样例具体为标注的信息项的CSS(CascadingStyle Sheets,层叠样式表)表达式(CSS expression),信息抽取通式为根据标注的信息项对应的两个以上的CSS表达式生成的CSS通式。CSS表达式用于将CSS属性与JavaScript计算模型关联起来,抽取信息样例的CSS表达式中包含了所需抽取的各信息项的特性,由两个抽取信息样例生成通用的CSS表达式即为形成CSS通式,基于该CSS通式则可以通用的自动抽取不同网页中的所需信息项,使得爬虫系统具有通用性,且使用CSS选择器,不仅实现简单,而且选择性能好、运行速度快。当然,也可以根据实际需求采用其他如XPath表达式(XMLPath Language,可扩展标记语言)等方式来定位HTML中的元素。
具体的对于唯一指定同一个列表页中不同HTML标签的两个CSS表达式,该两个CSS表达式的结构是非常相似的,只是通过在标注项所处CSS层级中指定了索引表示不同的HTML标签。例如对于抽取信息样例sample的“LI:nth-of-type(9)”部分,索引9指定了标注项位于<li>标签层级中的第9个。即通常用户给出的两个CSS样例结构基本是一致的,仅仅是通过某一层节点表明该节点处于不同的层级,如“:nth-of-type(9)”,该部分内容也即为“杂质”。CSS通式形成的过程也即为移除该“杂质”的过程,以去除个CSS样例中表示特定信息的部分,从而形成CSS通式。
本实施例当抽取信息样例为标注的信息项的CSS表达式,信息抽取通式为根据标注的信息项对应的两个以上的CSS表达式生成的CSS通式时,根据CSS表达式生成CSS通式的步骤包括:
获取目的信息项对应的各CSS表达式中字符串长度最短的字符串长度值length;
顺序遍历目的信息项对应的一个CSS表达式中字符串,且遍历的字符串长度值取为所述最短的字符串长度值length,每当查找到各CSS表达式中HTML标签层级结构不一致的目的字符时,取目的字符前的第一预设字符时为查找出的各CSS表达式中HTML标签层级结构不一致的起始位置;
从起始位置开始继续遍历目的信息项对应的各CSS表达式中剩余各个字符,直到查找到第二预设字符时,判定查找出各抽取信息样例中HTML标签层级结构不一致的结束位置;
从目的信息项对应的各CSS表达式中选取一个目的CSS表达式,对目的CSS表达式中从起始位置到所述结束位置间的目的字符串,以及目的字符串所在的CSS选择器对应的字符串进行移除处理,生成目的信息项对应的CSS通式。
本实施例通过上述步骤,可以结合CSS表达式之间的结构特性来生成CSS通式,可以进一步提高通式生成的效率以及精度,从而进一步提高信息抽取的精度以及效率。
上述第一预设字符、第二预设字符具体可以分别为“(”、“)”,具体可以根据实际应用需求进行配置。
在具体应用实施例中,为标注的每个信息项取两个抽取信息样例,两个抽取信息样例分别为sample1和sample2,具体如分别为:sample1:HTML>BODY>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>UL:nth-of-type(1)>LI:nth-of-type(1)>A:nth-of-type(1);
sample2:HTML>BODY>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>UL:nth-of-type(1)>LI:nth-of-type(9)>A:nth-of-type(1)。逐一对比上述抽取信息样例可知,两个抽取信息样例在表示HTML标签层级的位置(sample1为(1),sample2为(9))前均是相同的,使用不同数字表示标签层级,则查找出该不同的标签层级后,将“nth-of-type()”替换为空字符串,既可以形成CSS通式。
本实施例上述生成CSS通式的详细步骤为:
Step1.判断sample1和sample2是否为空串,若是直接跳转至结束;若否,计算sample1和sample2字符串长度的较短者,命其字符串长度为length;
Step2.对sample1中下标从0到length的字符进行遍历,每当遇到“(”字符时记录下标值为start,直到sample1和sample2的同一个下标不相同为止,即查找出sample1和sample2中索引不一致的起始位置;
Step3.对sample1中下标start开始继续遍历sample1剩余的各个字符,直到字符为“)”,记录下标end,即查找sample1和sample2中结构不同的结束位置;
Step4.校验:判断start和end是否满足任意一个条件:start==0或end==0或end<star,若至少一个满足跳至Step5,否则判定无法抽取CSS通式,输出错误信息;
Step5.新建sample变量,值为sample1和sample2中的长度较短者;判定sample变量中下标start到end所处层级是所需处理的CSS层级,删除sample中下标start至end间的字符串(本实施例中具体为“9”),形成所需列表信息的CSS通式。
例如“LI:nth-child(x)”和“LI:nth-of-type(x)”等表达式都特指了<li>系列标签中的唯一标签,删除其中的特指信息便能获取所需列表信息的CSS通式,于是将sample中start及end所处层级中的“:nth-child()”和“:nth-of-type()”等删除即可。返回sample为最终CSS通式,由该CSS通式能够选取到本列表页的所有标题。
本实施例上述模板标注方法,通过查找两个CSS样例中索引不一致的起始位置、结构不同的结束位置进行信息删除,执行效率非常高,且时间复杂度仅有O(n),给定标注正确的sample1及sample2后,便能精确生成CSS通式,进而可以使得爬虫系统能够更加精确、高效地进行数据抽取工作。
本实施例中,网页信息具体包括网页URL信息项、网页HTML源码项以及网页HTML标签等,网页URL信息项为根据网页URL地址生成的信息项,网页信息的配置具体可以根据实际需求进行增删,由网页信息与信息抽取通式一并形成信息抽取模板作为网站模板,如图2所示。即网站模板的出处来源于网页URL、<HTML>...</HTML>标签中的标题、作者、发表时间和其他必要信息。
如图2所示,网页URL信息项具体包括UrlModel部分、DataSource部分,UrlModel部分为根据网页URL地址得到的列表页翻页通式,以用于爬虫自动进行翻页;DataSource部分为用于爬虫获取模板信息的ID号。按照上述步骤生成信息抽取通式后,然后根据url生成UrlModel、DataSource,以及输入的爬取信息形成信息抽取模板,保存模板以供后续爬虫任务使用。上述模板中各信息项设置均可以根据实际需求进行增加或调整。
本实施例通过上述步骤生成信息抽取模板后,存储在数据库或其他指定位置中,当接收到爬虫任务时,读取存储的信息抽取模板,由该信息抽取模板按照膜板中网页信息、各信息项的信息抽取通式进行信息抽取,即可抽取出各目标网页中所需的如标题、作者、发表时间等信息。当爬虫任务调整或发生网页改版时,只需要简单的修改信息抽取模板中相应内容,即可重新进行新的爬虫任务。
本实施例上述基于模板标注方式实现网页分布式通用的爬虫抓取,通过由两个抽取信息样例生成信息抽取通式,再由信息抽取通式与网页信息一并形成信息抽取模板进行存储,通过读取信息抽取模板中信息来执行所需爬虫任务,能显著提升爬虫的通用性以及稳定性,网站结构发生改变时也无需重新构建模板,仅需要对模板进行简单的修改,尤其是当应用于大量网站的爬虫抓取时,可以大大提高爬虫的抓取效率。
如图4所示,本实施例基于模板标注的分布式爬虫装置包括:
信息标注模块,用于标注目标网页所需抽取的信息项,分别为各信息项获取至少两个抽取信息样例;
通式生成模块,用于根据抽取信息样例,分别为各信息项生成对应的信息抽取通式;
模板生成模块,用于根据各信息项对应的信息抽取通式以及所需的网页信息生成信息抽取模板;
分布式爬虫模块,用于当接收到爬虫任务时,读取所述信息抽取模板进行信息抽取。
本实施例中,通式生成模块具体包括:
查找单元,用于查找所述信息项对应的所述抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围;
生成单元,用于从目的信息项对应的各抽取信息样例中选取一个作为目标抽取信息样例,对目标抽取信息样例中目的位置范围内的字符串进行移除处理,生成得到目的信息项对应的所述信息抽取通式。
本实施例中,查找单元包括:
第一查找子单元,用于查找两个抽取信息样例中HTML标签层级结构不一致的起始位置;
第二查找子单元,用于从起始位置开始,查找两个抽取信息样例中结构不一致的结束位置;
输出单元,用于由从起始位置至所述结束位置之间的位置范围得到查目的位置范围。
本实施例中,第二查找子单元与输出单元之间还连接有校验单元,用于根据起始位置、所述结束位置之间的前后位置关系进行校验,当起始位置与所述结束位置之间的前后位置关系符合预设条件时判定校验通过。
本实施例基于模板标注的分布式爬虫系统与上述基于模板标注的分布式爬虫方法为一一对应,两者具有相同的实现原理及效果,在此不再一一赘述。
如图5所示,本发明具体应用实施例中上述分布式爬虫装置中信息标注模块使用模板标注工具,由模板标注工具对具体网站进行模板标注,通过模板生成模块生成信息抽取模板后进行保存以供爬虫系统使用;分布式爬虫模块具体包括:
模板管理服务单元,主要与用户和爬虫进行交互,用于对所有模板信息进行管理(增删改查);
任务调度服务单元,主要与爬虫进行交互,用于下发爬虫任务后,根据不同的任务信息进行调度;
代理调度服务单元,用于为爬虫提供大量不同的代理。
本实施例上述分布式爬虫模块的具体构成均可依据实际需求调配。
实施例2:
如图6所示,采用与实施例1相同的原理,并预先定义:
定义1.UrlModel:根据网页URL能够推导出的列表页翻页通式,可用于爬虫自动进行翻页;
定义2.DataSource:网站模板唯一ID,用于爬虫根据ID获取模板信息。
本发明在具体应用实施例中基于模板标注实现分布式爬虫的详细步骤为:
Step1.用户在Chrome浏览器使用模板标注工具对目标网页所需抓取项(如列表页的标题、作者、发表时间以及其他信息等)进行标注。标注完成后,模板标注工具将会获得这两个标注项的CSS表达式,称为sample1(假设这里为HTML>BODY>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>UL:nth-of-type(1)>LI:nth-of-type(1)>A:nth-of-type(1))和sample2(假设这里为HTML>BODY>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>UL:nth-of-type(1)>LI:nth-of-type(9)>A:nth-of-type(1))。由该两个参数作为最终生成CSS通式的必要参数。
Step2.判断sample1和sample2是否为空串,若是直接跳转至结束;若否计算sample1和sample2字符串长度的较短者,命其字符串长度为length;
Step3.下标从0到length遍历sample1,每当遇到“(”字符时记录下标值为start,直到sample1和sample2的同一个下标不相同为止,以找到索引不一致的起始位置。
Step4.从下标start继续遍历sample1各个字符,直到字符为')',记录下标end,以记录sample1和sample2中结构不同的结束位置。
Step5.判断start和end是否满足任意一个条件:start==0或end==0或end<start。若至少一个满足,跳至Step6。否则判定无法抽取CSS通式,输出错误信息跳转步骤Step11。
Step6.新建sample变量,值为sample1和sample2中的长度较短者,删除sample中下标start至end间的字符串。例如"LI:nth-child(x)"和"LI:nth-of-type(x)"表达式都特指了<li>系列标签中的唯一标签,删除其中的特指信息便能获取所需列表信息的CSS通式。将sample中start及end所处层级中的":nth-child()"和":nth-of-type()"替换为空字符串。
Step7.返回sample为最终CSS通式,结果具体为“HTML>BODY>DIV:nth-of-type(5)>DIV:nth-of-type(2)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>DIV:nth-of-type(1)>UL:nth-of-type(1)>LI>A:nth-of-type(1)”,由该CSS通式能够选取到本列表页的所有标题等信息。然后根据url生成UrlModel、DataSource以及输入的爬取信息形成模板并保存。
Step8.用户在用户任务管理界面创建任务,以供任务调度使用。
Step9.爬虫从任务调度申领到任务,从代理调度申请代理,开始数据抓取。
Step10.爬虫根据任务信息,从模板调度服务读取Step7保存的模板,进行信息抽取、数据保存。
Step11.步骤结束。
本实施例通过上述步骤,由Step1进行信息标注,由Step2-Step7实现模板标注,实现复杂程度低,时间复杂度仅有O(n),能精确生成CSS通式,结合步骤Step8-Step10的爬虫任务调度,可以快速、高效的实现各项爬虫任务。
本发明实施例提供一种计算机装置,该计算机装置包括处理器,处理器用于执行存储器中计算机程序时实现上述各个方法实施例提供的基于模板标注的分布式爬虫方法的步骤。
示例性的,计算机程序可以被分割成一个或多个模块,一个或者多个模块被存储在存储器中,并由处理器执行,以完成本发明。一个或多个模块可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述计算机程序在计算机装置中的执行过程。例如,计算机程序可以被分割成上述各个方法实施例提供的网页正文提取方法的步骤。
本领域技术人员可以理解,上述计算机装置的描述仅仅是示例,并不构成对计算机装置的限定,可以包括比上述描述更多或更少的部件,或者组合某些部件,或者不同的部件,例如可以包括输入输出设备、网络接入设备、总线等。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机装置的控制中心,利用各种接口和线路连接整个计算机装置的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机装置的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
所述计算机装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个基于模板标注的分布式爬虫方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信号以及软件分发介质等。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于模板标注的分布式爬虫方法,其特征在于,包括:
标注目标网页所需抽取的信息项,分别为各所述信息项获取至少两个抽取信息样例;
根据所述抽取信息样例,分别为各所述信息项生成对应的信息抽取通式;
根据各所述信息项对应的所述信息抽取通式以及所需的网页信息生成信息抽取模板;
当接收到爬虫任务时,读取所述信息抽取模板进行信息抽取。
2.根据权利要求1所述的基于模板标注的分布式爬虫方法,其特征在于,所述根据所述抽取信息样例,分别为各所述信息项生成对应的信息抽取通式,包括:
查找所述信息项对应的各所述抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围;
从所述信息项对应的各所述抽取信息样例中选取一个作为目标抽取信息样例;
对所述目标抽取信息样例中所述目的位置范围内的字符串进行移除处理,生成所述信息项对应的所述信息抽取通式。
3.根据权利要求2所述的基于模板标注的分布式爬虫方法,其特征在于,所述查找所述信息项对应的各所述抽取信息样例中表示特定信息的部分的位置范围,得到目的位置范围,包括:
查找所述信息项所对应的各所述抽取信息样例中HTML标签层级结构不一致的起始位置;
从所述起始位置开始,查找所述HTML标签层级结构不一致的结束位置;
将所述起始位置至所述结束位置之间的位置范围确定为所述目的位置范围。
4.根据权利要求3所述的基于模板标注的分布式爬虫方法,其特征在于,所述从所述起始位置开始,查找所述信息项所对应的各所述抽取信息样例中HTML标签层级结构不同的结束位置之后,还包括:
根据所述起始位置、所述结束位置之间的前后位置关系进行校验,当所述起始位置与所述结束位置之间的前后位置关系符合预设条件时判定校验通过。
5.根据权利要求2所述的基于模板标注的分布式爬虫方法,其特征在于,所述对所述目标抽取信息样例中所述目的位置范围内的字符串进行移除处理,包括:
对所述目标抽取信息样例中所述目的位置范围内的目的字符串,以及所述目的字符串所在的标签层级表达式中除标签以外的字符串进行删除和/或替换为预设字符,所述标签层级表达式为用于表示HTML标签层级所在位置的表达式。
6.根据权利要求1~5中任意一项所述的基于模板标注的分布式爬虫方法,其特征在于,所述抽取信息样例为所述信息项的CSS表达式,所述信息抽取通式为根据所述CSS表达式生成的CSS通式。
7.根据权利要求6所述的基于模板标注的分布式爬虫方法,其特征在于,根据所述CSS表达式生成CSS通式,包括:
获取所述信息项对应的各所述CSS表达式中字符串长度最短的字符串长度值length;
顺序遍历所述信息项对应的一个所述CSS表达式中的字符串,且遍历的字符串长度值取为所述最短的字符串长度值length,每当查找到各所述CSS表达式中HTML标签层级结构不一致的目的字符时,取目的字符前的第一预设字符为查找出的各所述CSS表达式中HTML标签层级结构不一致的起始位置;
从所述起始位置开始继续遍历所述信息项对应的各所述CSS表达式中剩余各个字符,直到查找到第二预设字符时,判定查找出各所述抽取信息样例中HTML标签层级结构不一致的结束位置;
从所述信息项对应的各所述CSS表达式中选取一个目的CSS表达式,对目的CSS表达式中从所述起始位置到所述结束位置间的目的字符串,以及所述目的字符串所在的CSS选择器对应的字符串进行移除处理,生成所述信息项对应的所述CSS通式。
8.一种基于模板标注的分布式爬虫装置,其特征在于,包括:
信息标注模块,用于标注目标网页所需抽取的信息项,分别为各所述信息项获取至少两个抽取信息样例;
通式生成模块,用于根据所述抽取信息样例,分别为各所述信息项生成对应的信息抽取通式;
模板生成模块,用于根据各所述信息项对应的所述信息抽取通式以及所需的网页信息生成信息抽取模板;
分布式爬虫模块,用于当接收到爬虫任务时,读取所述信息抽取模板进行信息抽取。
9.一种计算机装置,包括处理器以及存储器,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,其特征在于,所述处理器用于执行所述计算机程序,以执行如权利要求1~7中任意一项所述方法。
10.一种存储有计算机程序的计算机可读存储介质,其特征在于,所述计算机程序执行时实现如权利要求1~7中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110813832.5A CN113434748A (zh) | 2021-07-19 | 2021-07-19 | 基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110813832.5A CN113434748A (zh) | 2021-07-19 | 2021-07-19 | 基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113434748A true CN113434748A (zh) | 2021-09-24 |
Family
ID=77761022
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110813832.5A Pending CN113434748A (zh) | 2021-07-19 | 2021-07-19 | 基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113434748A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064157A (zh) * | 2021-11-09 | 2022-02-18 | 中国电力科学研究院有限公司 | 基于页面元素识别的自动化流程实现方法、系统、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033282A (zh) * | 2018-07-11 | 2018-12-18 | 山东邦尼信息科技有限公司 | 一种基于抽取模板的网页正文抽取方法及装置 |
CN111125483A (zh) * | 2019-12-17 | 2020-05-08 | 湖南星汉数智科技有限公司 | 一种网页数据抽取模板的生成方法、装置、计算机装置及计算机可读存储介质 |
CN111191097A (zh) * | 2019-12-20 | 2020-05-22 | 天阳宏业科技股份有限公司 | 一种网络爬虫自动化获取网页信息方法、装置及系统 |
-
2021
- 2021-07-19 CN CN202110813832.5A patent/CN113434748A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109033282A (zh) * | 2018-07-11 | 2018-12-18 | 山东邦尼信息科技有限公司 | 一种基于抽取模板的网页正文抽取方法及装置 |
CN111125483A (zh) * | 2019-12-17 | 2020-05-08 | 湖南星汉数智科技有限公司 | 一种网页数据抽取模板的生成方法、装置、计算机装置及计算机可读存储介质 |
CN111191097A (zh) * | 2019-12-20 | 2020-05-22 | 天阳宏业科技股份有限公司 | 一种网络爬虫自动化获取网页信息方法、装置及系统 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114064157A (zh) * | 2021-11-09 | 2022-02-18 | 中国电力科学研究院有限公司 | 基于页面元素识别的自动化流程实现方法、系统、设备及介质 |
CN114064157B (zh) * | 2021-11-09 | 2023-09-15 | 中国电力科学研究院有限公司 | 基于页面元素识别的自动化流程实现方法、系统、设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9323731B1 (en) | Data extraction using templates | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
US9619448B2 (en) | Automated document revision markup and change control | |
KR101255506B1 (ko) | 네트워크 양식들에 대한 데이터 구동 액션 | |
US7818330B2 (en) | Block tracking mechanism for web personalization | |
US9229691B2 (en) | Method and apparatus for programming assistance | |
JP6090850B2 (ja) | ソースプログラム解析システム、ソースプログラム解析方法およびプログラム | |
CN103699591A (zh) | 一种基于示例页面的网页正文提取方法 | |
CN110738027A (zh) | 生成电子表格公式的计算机实现的方法、设备和存储介质 | |
CN111159982B (zh) | 文档编辑方法、装置、电子设备及计算机可读存储介质 | |
CN111352628A (zh) | 一种前端代码生成方法、装置、计算机系统及可读存储介质 | |
CN104217036A (zh) | 一种网页内容提取方法和设备 | |
CN110543298A (zh) | 网页样式生成方法及装置、网页生成方法及装置 | |
US10146749B2 (en) | Tracking JavaScript actions | |
JP2008090404A (ja) | 文書検索装置、文書検索方法および文書検索プログラム | |
US20090204889A1 (en) | Adaptive sampling of web pages for extraction | |
JP5098605B2 (ja) | アノテーションプログラム、アノテーション装置 | |
CN113434748A (zh) | 基于模板标注的分布式爬虫方法、装置、计算机装置及计算机可读存储介质 | |
US20140122693A1 (en) | Web Navigation Tracing | |
CN105426676A (zh) | 一种钻井数据处理方法和系统 | |
CN116204692A (zh) | 网页数据提取方法、装置、电子设备及存储介质 | |
CN111125483B (zh) | 网页数据抽取模板生成方法、装置、计算机装置及存储介质 | |
US9426237B2 (en) | Web navigation using web navigation pattern histories | |
JP5808264B2 (ja) | コード生成装置及びコード生成方法及びプログラム | |
JP5187064B2 (ja) | Web資源追跡管理プログラム、Web資源追跡管理装置及びWeb資源追跡管理方法 |
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 |
Application publication date: 20210924 |
|
RJ01 | Rejection of invention patent application after publication |