CN111797336A - 一种网页解析方法、装置、电子设备及介质 - Google Patents
一种网页解析方法、装置、电子设备及介质 Download PDFInfo
- Publication number
- CN111797336A CN111797336A CN202010647789.5A CN202010647789A CN111797336A CN 111797336 A CN111797336 A CN 111797336A CN 202010647789 A CN202010647789 A CN 202010647789A CN 111797336 A CN111797336 A CN 111797336A
- Authority
- CN
- China
- Prior art keywords
- type
- tag
- block
- level
- label
- 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/955—Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]
- G06F16/9562—Bookmark management
-
- 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/906—Clustering; Classification
-
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本申请提供了一种网页解析方法、装置、电子设备及介质,其中,该方法包括:获取待解析的目标网页的文档对象模型;加载用户按照预设格式配置的目标页面解析规则;获取所述目标页面解析规则中的标签类型;针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。本申请实施例可以提高网页解析的通用性,减轻开发人员大量重复的开发工作。
Description
技术领域
本申请涉及网页解析技术领域,尤其是涉及一种网页解析方法、装置、电子设备及介质。
背景技术
目前,网页解析方式都是根据具体网页的结构编写一套独立的解析模块。解析不同的网页时很难进行代码的复用,这样会造成开发人员会有大量的重复工作。且网页的解析都是由开发人员来完成,如果需要对需求进行更改(例如网页改版等问题)往往需要用户与开发人员进行频繁的沟通。
在数据采集工作中需要解析的网页数据在页面中的结构布局主要有两种形式:列表(<ul>)、表格(<table>)等块级标签和超链接或标题(<a>、<p>)等行级标签。但是,当面对很多不同的网站(页面)的数据解析任务时,由于页面结构布局的变化多端,就需要针对每种页面都要编写特定的解析方法,这样就造成了大量相对重复的开发工作。
发明内容
有鉴于此,本申请的目的在于提供一种网页解析方法、装置、电子设备及介质,以提高网页解析的通用性,减轻开发人员大量重复的开发工作。
第一方面,本申请实施例提供了一种网页解析方法,包括:
获取待解析的目标网页的文档对象模型;
加载用户按照预设格式配置的目标页面解析规则;
获取所述目标页面解析规则中的标签类型;
针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
在一种可能的实施方式中,所述标签类型包括行级标签、块级标签和行内块标签中的至少一种,所述块级标签包括列表类型的块级标签和表格类型的块级标签。
在一种可能的实施方式中,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
在一种可能的实施方式中,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;
若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。
在一种可能的实施方式中,所述方法还包括:
若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;
将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
在一种可能的实施方式中,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;
将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
在一种可能的实施方式中,获取待解析的目标网页的文档对象模型,包括:
获取待解析的目标网页的源代码;
将所述目标网页的源代码组装为文档对象模型。
第二方面,本申请实施例提供了一种网页解析装置,包括:
对象获取模块,用于获取待解析的目标网页的文档对象模型;
规则加载模块,用于加载用户按照预设格式配置的目标页面解析规则;
标签获取模块,用于获取所述目标页面解析规则中的标签类型;
网页解析模块,用于针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
在一种可能的实施方式中,所述标签类型包括行级标签、列表类型的块级标签和表格类型的块级标签中的至少一种。
在一种可能的实施方式中,所述网页解析模块具体用于:针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
在一种可能的实施方式中,所述网页解析模块具体用于:
针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;
若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。
在一种可能的实施方式中,所述网页解析模块还用于:
若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;
将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
在一种可能的实施方式中,所述网页解析模块具体用于:
针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;
将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
在一种可能的实施方式中,所述对象获取模块包括:
获取单元,用于获取待解析的目标网页的源代码;
组装单元,用于将所述目标网页的源代码组装为文档对象模型。
第三方面,本申请实施例还提供一种电子设备,包括:处理器、存储器和总线,所述存储器存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储器之间通过总线通信,所述机器可读指令被所述处理器执行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
第四方面,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述第一方面,或第一方面中任一种可能的实施方式中的步骤。
本申请实施例提供的一种网页解析方法,首先获取待解析的目标网页的文档对象模型;其次加载用户按照预设格式配置的目标页面解析规则;再次获取所述目标页面解析规则中的标签类型;最后针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。由于用户可以按照预设格式来配置目标页面解析规则,也即页面解析规则可以按照用户需要灵活更改,可以提高网页解析的通用性,避免开发人员重复开发的工作,节省与开发人员频繁的沟通。
为使本申请的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本申请实施例所提供的一种网页解析方法的流程图;
图2示出了本申请实施例所提供的模拟网页截图;
图3示出了本申请实施例所提供的一种网页解析装置的结构示意图;
图4示出了本申请实施例所提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
考虑到现有的网页解析方式都是根据具体网页的结构编写一套独立的解析模块。解析不同的网页时很难进行代码的复用,这样会造成开发人员会有大量的重复工作。且网页的解析都是由开发人员来完成,如果需要对需求进行更改(例如网页改版等问题)往往需要用户与开发人员进行频繁的沟通。
在数据采集工作中需要解析的网页数据在页面中的结构布局主要有两种形式:列表(<ul>)、表格(<table>)等块级标签和超链接或标题(<a>、<p>)等行级标签。但是,当面对很多不同的网站(页面)的数据解析任务时,由于页面结构布局的变化多端,就需要针对每种页面都要编写特定的解析方法,这样就造成了大量相对重复的开发工作。基于此,本申请实施例提供了一种网页解析方法、装置、电子设备及介质,下面通过实施例进行描述。
为便于对本实施例进行理解,首先对本申请实施例所公开的一种网页解析方法进行详细介绍。
请参照图1,图1为本申请实施例所提供的一种网页解析方法的流程图。如图1所示,可以包括以下步骤:
步骤S101、获取待解析的目标网页的文档对象模型;
步骤S102、加载用户按照预设格式配置的目标页面解析规则;
步骤S103、获取所述目标页面解析规则中的标签类型;
步骤S104、针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
在步骤S101中,首先获取待解析的目标网页的HTML源代码,然后将HTML源代码组装为HTML dom对象,即文档对象模型。本实施例不限于此,还可以为其他类型的源代码和dom对象。
超文本标记语言(Hyper Text Markup Language,HTML)源代码是由HTML命令组成的未编译的文本文件,HTML命令可以说明文字、图形、动画、声音、表格、链接等。HTML的结构包括头部(Head)、主体(Body)两大部分,其中头部描述浏览器所需的信息,而主体则包含所要说明的具体内容。
文档对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理可扩展置标语言的标准编程接口。它是一种与平台和语言无关的应用程序接口(API),它可以动态地访问程序和脚本,更新其内容、结构和www文档的风格(目前,HTML和XML文档是通过说明部分定义的)。
在步骤S102中,用户需要按照预设格式配置目标页面解析规则,然后加载目标页面解析规则。也即将页面解析规则的制定以及编写工作交由用户来完成,可以灵活地对页面解析规则进行更改。可选地,页面解析规则的加载过程可以是通过接口提交页面解析规则。页面解析规则的加载过程还可以是从数据库中读取已经编写好的解析规则。由于用户可以按照预设格式来配置目标页面解析规则,也即页面解析规则可以按照用户需要灵活更改,可以提高网页解析的通用性,避免开发人员重复开发的工作,节省与开发人员频繁的沟通。
下面以图2所示的页面为例,对目标页面解析规则进行详细介绍。
图2所示的页面对应的网页的HTML源码包括:
上述网页的HTML源码中数据的布局:一共存在三种结构的数据,分别为列表类型,表格类型以及单独一行的数据。需要说明的是,以这三种结构的数据为例仅仅是为了教导本领域技术人员如何实施,本发明本实施例不限于此,还可以包括其他结构的数据,例如行内块结构的数据。假设用户想要同时获取页面中这三种结构中的数据则需要编写的目标页面解析规则如下:
其中,上述目标页面解析规则中的key值如表一所示:
表一
通过上述表一可知,上述目标页面解析规则要想达到的目的是:获取列表中的数据,并且将<a>、<p>不同标签中的内容分开获取;获取表格中的数据;获取<a>标签的链接地址。
在步骤S103中,HTML中对标签进行分类,是根据标签在文档中的位置特性进行分类的,所述标签类型包括行级标签、块级标签和行内块标签中的至少一种,所述块级标签包括列表类型的块级标签和表格类型的块级标签。
行级标签指的是,能和其他元素待在同一行,且不能设置宽高的标签,例如:a,span,strong,u,em-->。
块级标签指的是,独占一行,不和其他元素待在同一行,且能设置宽高的标签,例如:div,p,h1-h6,ul,li,dl,dt,dd。
在步骤S104中,针对不同的标签类型,采用不同的解析方式对所述文档对象模型中的网页数据进行解析。
下面以完整代码(python)对步骤S104中的解析方法进行详细介绍。
完整代码(python):
针对上述完整代码(python),在解析的过程中包括以下三种情况:
第一种情况:针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
具体地,对于简单的行级标签解析:通过页面解析规则中所定义的xpath表达式对HTML dom对象中的数据进行提取。可选地,还可以使用cssslect等其他可以操作HTML dom节点的方法获取页面元素。
result=dom.xpath("string({current_xpath})".format(current_xpath=xpath_e xp))
第二种情况:针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
具体地,首先对页面中要解析的块级标签进行层级的划分,然后对划分之后的子标签再进行数据提取,最后再将子标签中提取出来的数据进行组装合并为一条完整的数据。需要说明的是,在具体实施中可以使用xpath公式进行页面内容的提取,或者使用cssslect等其他可以操作HTML DOM节点的方法获取页面元素。下面举例进行说明。
首先在HTML dom中定位到要解析的块级标签下面所有的子标签:
children_list=dom.xpath(.//div[@class='list-info']/ul+’/*’)
for child in children_list:
接下来需要判断是否需要对子标签内的元素进一步拆分,如果不需要则直接获取子标签内的所有文本:
li_value=child.xpath(‘string(.)’)
对于配置了document参数的情况,需要对每一个子标签进行拆分;针对每一个子标签,遍历document参数中配置的每一项。解析后的结果为每一个子标签为一个字典类型的数据,其中key是用户在document中定义的document_field对应的值,value为用户在document中定义的document_xpath对应解析出来的数据:
for field,document_exp in document.items():
li_value[field]=child.xpath("string(.{})".format(document_exp))
最后将所有子标签数据合并在一起,作为一条完整的‘list’标签中的数据:
result.append(li_value)
第三种情况:针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
具体地,首先对页面中要解析的块级标签进行层级的划分,然后对划分之后的子标签再进行数据提取,最后再将子标签中提取出来的数据进行组装合并为一条完整的数据。需要说明的是,在具体实施中可以使用xpath公式进行页面内容的提取,或者使用cssslect等其他可以操作HTML DOM节点的方法获取页面元素。下面举例进行说明。
对于“table”类型的块级标签解析:结果将以{’表头’:’内容’}这样的键值对的形式输出。
首先,在HTML dom中定位到要解析的块级标签下面所有的子标签(列表中的每一行):
children_list=dom.xpath(.//div[@class='table-info']/ul+’/*’)
for child in children_list:
接下来对列表中的每一行中的数据进行拆分;将拆分后的数据组装成字典类型的数据。如果每一行中的元素个数等于2个,则第一个作为key,第二个作为value;若每一行中的元素个数大于两个,则选取第一个作为key,剩下的所有值作为value:
通过上述解析,得到的解析结果包括:
需要说明的是,以行级标签、列表类型的块级标签和表格类型的块级标签的解析为例,仅是为了教导本领域技术人员如何实施本发明,在具体实施中不限于此,还可以包括其他类型标签的解析。
在一种可能的实施方式中,在步骤S104之后还包括:将解析结果同步返回给用户,或者将解析结果输出到指定的存储位置,例如MongoDB等NoSQL数据库或者是Kafka等消息队列中。
本申请实施例提供的一种网页解析方法,首先获取待解析的目标网页的文档对象模型;其次加载用户按照预设格式配置的目标页面解析规则;再次获取所述目标页面解析规则中的标签类型;最后针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。由于用户可以按照预设格式来配置目标页面解析规则,也即页面解析规则可以按照用户需要灵活更改,可以提高网页解析的通用性,避免开发人员重复开发的工作,节省与开发人员频繁的沟通。
基于相同的技术构思,本申请实施例还提供一种页面解析装置、电子设备、以及计算机存储介质等,具体可参见以下实施例。
请参照图3,为本申请实施例所提供的一种网页解析装置的结构示意图。如图3所示,可以包括:
对象获取模块301,用于获取待解析的目标网页的文档对象模型;
规则加载模块302,用于加载用户按照预设格式配置的目标页面解析规则;
标签获取模块303,用于获取所述目标页面解析规则中的标签类型;
网页解析模块304,用于针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
在一种可能的实施方式中,所述标签类型包括行级标签、块级标签和行内块标签中的至少一种,所述块级标签包括列表类型的块级标签和表格类型的块级标签。
在一种可能的实施方式中,所述网页解析模块具体用于:针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
在一种可能的实施方式中,网页解析模块304具体用于:
针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;
若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。
在一种可能的实施方式中,网页解析模块304还用于:
若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;
将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
在一种可能的实施方式中,网页解析模块304具体用于:
针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;
将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
在一种可能的实施方式中,对象获取模块301包括:
获取单元,用于获取待解析的目标网页的源代码;
组装单元,用于将所述目标网页的源代码组装为文档对象模型。
本申请实施例公开了一种电子设备,如图4所示,包括:处理器401、存储器402和总线403,所述存储器402存储有所述处理器401可执行的机器可读指令,当电子设备运行时,所述处理器401与所述存储器402之间通过总线403通信。所述机器可读指令被所述处理器401执行时以下步骤:
获取待解析的目标网页的文档对象模型;
加载用户按照预设格式配置的目标页面解析规则;
获取所述目标页面解析规则中的标签类型;
针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
在一种可能的实施方式中,所述标签类型包括行级标签、块级标签和行内块标签中的至少一种,所述块级标签包括列表类型的块级标签和表格类型的块级标签。
在一种可能的实施方式中,所述处理器401针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
在一种可能的实施方式中,所述处理器401针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;
若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。
在一种可能的实施方式中,所述处理器401还用于:
若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;
将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
在一种可能的实施方式中,所述处理器401针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;
将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
在一种可能的实施方式中,所述处理器401获取待解析的目标网页的文档对象模型,包括:
获取待解析的目标网页的源代码;
将所述目标网页的源代码组装为文档对象模型。
本申请实施例所提供的网页解析方法的计算机程序产品,包括存储了处理器可执行的非易失的程序代码的计算机可读存储介质,所述程序代码包括的指令可用于执行前面方法实施例中所述的方法,具体实现可参见方法实施例,在此不再赘述。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本申请的具体实施方式,用以说明本申请的技术方案,而非对其限制,本申请的保护范围并不局限于此,尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本申请实施例技术方案的精神和范围,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种网页解析方法,其特征在于,包括:
获取待解析的目标网页的文档对象模型;
加载用户按照预设格式配置的目标页面解析规则;
获取所述目标页面解析规则中的标签类型;
针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
2.根据权利要求1所述的方法,其特征在于,所述标签类型包括行级标签、块级标签和行内块标签中的至少一种,所述块级标签包括列表类型的块级标签和表格类型的块级标签。
3.根据权利要求2所述的方法,其特征在于,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对行级标签,采用所述目标页面解析规则中与该行级标签对应的解析方式,对所述文档对象模型中隶属于该行级标签的网页数据进行解析。
4.根据权利要求2所述的方法,其特征在于,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对列表类型的块级标签,在所述文档对象模型中定位所述列表类型的块级标签的所有子标签;
若所述列表类型的块级标签未配置文档参数,则获取该块级标签的所有子标签内的文本数据。
5.根据权利要求4所述的方法,其特征在于,还包括:
若所述列表类型的块级标签配置有文档参数,则遍历该文档参数中的每一项,将该块级标签的每个子标签进行拆分,得到字典类型的子标签数据;
将该块级标签的所有子标签对应的字典类型的子标签数据进行合并。
6.根据权利要求2所述的方法,其特征在于,针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析,包括:
针对表格类型的块级标签,在所述文档对象模型中定位所述表格类型的块级标签的所有子标签;
将该块级标签的每个子标签进行拆分,并将拆分后的数据组装成字典类型的数据。
7.根据权利要求1所述的方法,其特征在于,获取待解析的目标网页的文档对象模型,包括:
获取待解析的目标网页的源代码;
将所述目标网页的源代码组装为文档对象模型。
8.一种网页解析装置,其特征在于,包括:
对象获取模块,用于获取待解析的目标网页的文档对象模型;
规则加载模块,用于加载用户按照预设格式配置的目标页面解析规则;
标签获取模块,用于获取所述目标页面解析规则中的标签类型;
网页解析模块,用于针对每一种标签类型,采用与该标签类型对应的解析方式,对所述文档对象模型中隶属于该标签类型的网页数据进行解析。
9.一种电子设备,其特征在于,包括:处理器、存储介质和总线,所述存储介质存储有所述处理器可执行的机器可读指令,当电子设备运行时,所述处理器与所述存储介质之间通过总线通信,所述处理器执行所述机器可读指令,以执行如权利要求1至7任一所述方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行如权利要求1至7任一所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010647789.5A CN111797336A (zh) | 2020-07-07 | 2020-07-07 | 一种网页解析方法、装置、电子设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010647789.5A CN111797336A (zh) | 2020-07-07 | 2020-07-07 | 一种网页解析方法、装置、电子设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111797336A true CN111797336A (zh) | 2020-10-20 |
Family
ID=72811425
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010647789.5A Pending CN111797336A (zh) | 2020-07-07 | 2020-07-07 | 一种网页解析方法、装置、电子设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111797336A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527291A (zh) * | 2020-12-01 | 2021-03-19 | 瀚云科技有限公司 | 网页生成方法、装置、电子设备及存储介质 |
CN112733056A (zh) * | 2021-04-02 | 2021-04-30 | 北京百家视联科技有限公司 | 一种文档处理方法、装置、设备及存储介质 |
CN114817811A (zh) * | 2022-05-07 | 2022-07-29 | 盐城金堤科技有限公司 | 一种网站解析方法和装置 |
WO2022179128A1 (zh) * | 2021-02-25 | 2022-09-01 | 深圳壹账通智能科技有限公司 | 基于爬虫的数据抓取方法、装置、计算机设备及存储介质 |
CN117370635A (zh) * | 2023-12-08 | 2024-01-09 | 杭州实在智能科技有限公司 | 用于rpa网页内容提取与处理的方法及系统 |
-
2020
- 2020-07-07 CN CN202010647789.5A patent/CN111797336A/zh active Pending
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112527291A (zh) * | 2020-12-01 | 2021-03-19 | 瀚云科技有限公司 | 网页生成方法、装置、电子设备及存储介质 |
WO2022179128A1 (zh) * | 2021-02-25 | 2022-09-01 | 深圳壹账通智能科技有限公司 | 基于爬虫的数据抓取方法、装置、计算机设备及存储介质 |
CN112733056A (zh) * | 2021-04-02 | 2021-04-30 | 北京百家视联科技有限公司 | 一种文档处理方法、装置、设备及存储介质 |
CN112733056B (zh) * | 2021-04-02 | 2021-06-18 | 北京百家视联科技有限公司 | 一种文档处理方法、装置、设备及存储介质 |
CN114817811A (zh) * | 2022-05-07 | 2022-07-29 | 盐城金堤科技有限公司 | 一种网站解析方法和装置 |
CN114817811B (zh) * | 2022-05-07 | 2024-03-19 | 盐城天眼察微科技有限公司 | 一种网站解析方法和装置 |
CN117370635A (zh) * | 2023-12-08 | 2024-01-09 | 杭州实在智能科技有限公司 | 用于rpa网页内容提取与处理的方法及系统 |
CN117370635B (zh) * | 2023-12-08 | 2024-03-15 | 杭州实在智能科技有限公司 | 用于rpa网页内容提取与处理的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111797336A (zh) | 一种网页解析方法、装置、电子设备及介质 | |
US10067931B2 (en) | Analysis of documents using rules | |
KR100661393B1 (ko) | 웹 프로그래밍 환경을 응용한 웹사이트 관리 시스템 및방법 | |
CN110688307B (zh) | JavaScript代码检测方法、装置、设备和存储介质 | |
US20140282379A1 (en) | Computer-implemented method, system and computer program product for displaying a user interface component | |
CN106293675B (zh) | 系统静态资源加载方法及装置 | |
US10049095B2 (en) | In-context editing of output presentations via automatic pattern detection | |
KR20140048139A (ko) | 실행 페이지의 동적 갱신 기법 | |
US9817887B2 (en) | Universal text representation with import/export support for various document formats | |
US20130124969A1 (en) | Xml editor within a wysiwyg application | |
US20090083300A1 (en) | Document processing device and document processing method | |
WO2018160423A1 (en) | Markup code generator | |
Ochin | Cross browser incompatibility: reasons and solutions | |
JP4890051B2 (ja) | ブラウザ画面の表示装置およびそのためのプログラム | |
US20080005085A1 (en) | Server Device and Search Method | |
US9594737B2 (en) | Natural language-aided hypertext document authoring | |
CN116204692A (zh) | 网页数据提取方法、装置、电子设备及存储介质 | |
CN113656000B (zh) | 网页的处理方法和装置 | |
US20090083620A1 (en) | Document processing device and document processing method | |
CN112650479A (zh) | 网页css结构自动生成方法及存储介质 | |
CN116009863B (zh) | 前端页面渲染方法、设备及存储介质 | |
EP3942452B1 (en) | Cross-browser techniques for efficient document pagination | |
White | DITA for Print | |
US20240126978A1 (en) | Determining attributes for elements of displayable content and adding them to an accessibility tree | |
Sikora | Professional CSS3 |
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 |