CN113254751A - 一种复杂网页结构化信息精确提取方法、设备及存储介质 - Google Patents
一种复杂网页结构化信息精确提取方法、设备及存储介质 Download PDFInfo
- Publication number
- CN113254751A CN113254751A CN202110701621.2A CN202110701621A CN113254751A CN 113254751 A CN113254751 A CN 113254751A CN 202110701621 A CN202110701621 A CN 202110701621A CN 113254751 A CN113254751 A CN 113254751A
- Authority
- CN
- China
- Prior art keywords
- node
- field
- nodes
- block
- webpage
- 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
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/958—Organisation or management of web site content, e.g. publishing, maintaining pages or automatic linking
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明公开了一种复杂网页结构化信息精确提取方法、设备及存储介质,该方法包括:针对目标网页,收集一批样本网页;根据样本网页制定各个区块的查找规则和匹配规则;结合区块情况确定条目的查找规则和匹配规则;在区块内确定定位节点的查找规则和匹配规则;针对字段节点,确定从定位节点到此字段节点的查找规则和匹配规则;通过基于规则或机器学习的方法自动提取各个样本网页中的字段信息;根据提取的字段信息自动生成解析模板;对自动生成的解析模板进行校对纠正;针对任意HTML网页,根据域名、路径和文本特征选择对应的模板解析提取。本发明基于复杂网页特点,将其划分为多个区块,并利用定位节点的固有特征,提高了字段节点定位准确度。
Description
技术领域
本发明涉及电数字数据处理技术领域,尤其涉及一种复杂网页结构化信息精确提取方法、设备及存储介质。
背景技术
随着互联网和Web技术的快速发展,HTML网页成为越来越广泛使用的一种数据传输形式,然而绝大部分网页由于其内容、形式和风格的不同而在结构上有巨大差异。这给从HTML网页中提取信息带来了很大的挑战;所以从HTML中准确提取结构化信息是一项艰巨而又有意义的任务。
从HTML网页中提取信息,主要可以分为两种场景:一是从HTML中提取正文及标题等内容,主要针对资讯类网页;二是从HTML中提取结构化字段信息,主要针对属性较多的内容,如商品信息、简历信息、表单信息等。
针对资讯类网页信息提取,常见的方法主要有:
1)按节点名称针对性提取;按节点路径频率或信息量过滤无效内容;按正则直接匹配提取内容。按节点名称针对性提取方法,如“CN 111274515 A 基于HTML标签匹配的网页数据提取方法”,直接按要提取的字段从指定的标签节点中提取,如标题对应title节点,样式对应style节点,可提取的内容非常有限;
2)按节点路径频率或信息量过滤无效内容方法,如“CN110020302A 提取网页内容的方法和网页内容提取装置”,针对一类网页提取每个文本节点的模式,模式按节点TagName和3级父节点的TagName拼成,如果某个模式出现次数超过阈值,则将符合此模式的从HTML文档中删除,剩余部分即正文内容,此种方法只能提取正文,且容易出现漏删和多删的问题;
3)按正则直接匹配提取内容,如“CN 111966881 A 一种网页信息提取方法及系统、电子设备”,对目标网页选取一些网页样本,根据样本制定字段提取规则,人工检验后,用此规则对目标网页进行提取。此方法是使用规则对节点文本进行查找匹配,忽略了DOM结构特征,容易出现错漏;
4)规则+机器学习方法过滤非正文内容,如“CN 110457579 A基于模板和分类器协同工作的网页去噪方法及系统”,对资讯类网页进行预处理,数量达到阈值时,根据块级节点特征生成过滤模板,对非正文节点进行过滤,再通过机器学习方法判断剩余节点是否是正文,最终得到过滤了无关内容的正文文本。此方法正确率98.64%,召回率93.46%。
针对网页中结构化字段信息提取,常见方法主要有:一)根据DOM相似度匹配提取;二)基于节点索引路径或节点标签路径提取;三)使用XPath+正则提取字段信息;四)使用CssSelector+正则提取字段信息;五)基于无格式文本提取字段信息。
本发明针对的场景是复杂网页中结构化字段信息提取。一些常规的结构化字段网页,如商品介绍或职位介绍,字段一般只有十几个,且有明确的特征,字段对应的HTML元素固定不变,可以很容易地通过CssSelector或正则等特征提取。然而一些复杂的网页,如简历信息网页,涉及的候选人字段信息多达200多个,为了在有限的页面上展示尽可能全面的信息,一般招聘网站会隐藏字段值为空的字段对应的节点,这就导致一些字段节点索引链发生变化,进而其对应的XPath或CssSelector会发生变化,所以单纯基于XPath或CssSelector的字段提取方案难以针对复杂网页实现准确提取。
然而现有技术存在以下缺陷:
一)根据DOM相似度匹配提取,如“CN 103488665 A一种提取HTML页面选定区域内容的方法”提出根据HTML网页分析制作HTML形式的模板,然后转为元素列表,使用最大相似度算法对元素列表的HTML网页中的节点进行匹配,根据匹配结果,确定模板中的变量并提取信息。此方法不够灵活,如果某个字段是可选的,在进行最大相似度匹配时可能会因为字段缺失导致匹配度不足,出现漏匹配和误匹配情况;此外,针对内容较多的HTML网页,相似度算法计算量大,效率较低。
二)基于节点索引路径或节点标签路径提取,如“CN 107423391 B网页结构化数据的信息提取方法”,针对结构相同的几个HTML样本,预处理去除干扰信息,构成DOM树再进行剪枝重构,对字段对应的叶子节点进行特征路径标记(特征标签路径标记和特征数字路径标记),提取字段时,优先使用特征数字路径标记,如未匹配则使用特征路径标记。此方法假设字段对应的叶子节点对应的索引路径是始终不变的,然而针对一些比较复杂的结构化信息,如果有些字段值为空则此节点不会显示,就会导致后续节点的索引都出现变化;所以按特征数字路径标记的方法难以处理字段可选的情况,而特征路径标记单纯使用了节点标签名,很容易会匹配出很多节点,导致误匹配情况。
三)使用XPath+正则提取字段信息,如“CN106951451A一种网页内容提取方法、装置及计算设备”,从收集的样本DOM树中选择节点生成Xpath形式的节点匹配规则,包括节点添加规则、节点删除规则、尾图节点删除规则;根据域名从存储中获取对应的节点匹配规则,对目标HTML构建空的DOM树,按节点添加规则从HTML中选取节点添加到DOM中,按节点删除规则从DOM中删除节点,按尾图节点删除规则从DOM中删除尾图节点。此方案相当于把上一个方案中农的节点索引路径和节点标签路径进行了结合(因为Xpath包含了节点标签名和节点索引),某种程度上错误相比上一个方案会少一些,但依然会存在因为节点可选导致的XPath匹配不到或误匹配的情况。
四)使用CssSelector+正则提取字段信息,如“CN 104217036 B一种网页内容提取方法和设备”,获取网页DOM对应的解析模板,根据模板中的待提取元素、类型、位置和输出格式,找到DOM对应的元素,提取输出结果。元素的位置以CssSelector描述,类型包括字符串、日期、数字、列表。此方案使用CssSelector替换XPath,一定程度上改善了节点的匹配情况,但CssSelector无法彻底解决匹配到的节点不唯一问题,容易出现误匹配,故不适合于提取复杂字段信息。且CssSelector中一部分会用到节点索引,当网站页面发生了部分升级时,节点索引会发生变化,这时只使用CssSelector进行节点定位会出现匹配错误或未匹配的情况。且此方案中使用的CssSelector利用到了隔代选择器,在复杂网页或节点不固定网页中,隔代选择器大大增加了误匹配的概率,更容易出现提取错误。
五)基于无格式文本提取字段信息,可进一步分为两种方法:基于机器学习的从文本中提取字段信息方法,以及基于词法分析、正则等规则的字段信息提取。①基于机器学习的从文本中提取字段信息方法,如“CN 108629043 A 网页目标信息的提取方法、装置及存储介质”,从HTML中提取无格式文本,然后进行分词,经TF-IDF得到关键词,计算词向量输入到分类模型确定此HTML的主题类别;使用主题类别对应的命名实体提取模型从无格式文本中提取相关字段。此方案忽略了HTML特征,直接使用文本进行实体字段的提取,但一般命名实体提取模型支持的字段有限,无法适用于复杂的字段情况,且其效果依赖于数据规模和质量,可迁移性差,准确度不够高。②基于词法分析、正则等规则的字段信息提取,如“CN110020038A网页信息提取方法、装置、系统及电子设备”,对待处理的网页进行渲染,然后按视觉距离进行页面分割,形成多个区块,对文本区块采用此网页所属领域的分类模型计算分类,根据区块所属类别得到对应的信息提取规则,并对区块内的文本进行提取,提取的方法主要包括:antlr词法分析器、正则表达式、DSL语言等。此方案结合词法分析、正则等方法较命名实体识别方案在字段支持范围和准确性上有一定改善,但在区块划分时,按距离划分容易出现错分的情况。其次,此方案依旧是针对文本进行提取,忽略了HTML特征,对于一些复杂的字段多的HTML网页,很容易出现匹配错误的情况。
综上,几种方案中效果较好的是基于XPath或CssSelector+正则的方案,但上述方案都无法解决复杂网页(即HTML元素不固定的网页)的字段信息提取,或在复杂网页的提取上错误较多。
发明内容
本发明针对背景技术的缺陷,提出了一种复杂网页结构化信息精确提取方法、设备及存储介质,其中该方法包括一种动态、精确的节点定位方法和字段提取模板方法。动态指的是本发明在用CssSelector进行节点匹配时,不使用或很少使用节点索引,使用子选择器替换隔代选择器,且更多地是基于HTML元素的Class、ID、Name等其他固定的、不容易变化的特征;精确指的是对于CssSelector匹配到的多个候选HTML元素,本发明会使用Feature特征节点检查其内部某个子元素是否符合指定的特征,从而进行精确匹配。该模板字段提取方法,由目标网页的几个样本网页,生成解析模板,然后可将解析模板应用到上百万个同类的网页上,进行高效精确提取。
本发明采用的技术方案如下:
一种复杂网页结构化信息精确提取方法,包括以下步骤:
S1. 针对目标网页,收集一批样本网页;
S2. 根据样本网页制定各个区块的查找规则和匹配规则;
S3. 结合区块情况,确定条目的查找规则和匹配规则;如果是多条区块,则使用条目的查找规则和匹配规则查找匹配每个条目,否则将根节点作为此区块的唯一条目;
S4. 在区块内,确定定位节点的查找规则和匹配规则;
S5. 针对字段节点,确定从定位节点到此字段节点的查找规则和匹配规则;
S6. 通过基于规则或机器学习的方法自动提取各个样本网页中的字段信息,其中规则包括正则表达式和词法分析规则;
S7. 根据提取的字段信息自动生成解析模板;
S8. 对自动生成的解析模板进行校对纠正;
S9. 针对任意HTML网页,根据域名、路径和文本特征选择对应的模板解析提取。
进一步的,步骤S1包括:
针对要处理的目标网页,收集一批样式与DOM即文档对象模型结构相似,但数据不同的网页作为样本网页;样本网页应当是字段丰富的网页,从而覆盖各种字段变化情况。
进一步的,步骤S2中各个区块的查找规则和匹配规则是根据目标节点的DOM特征在指定的属性上记录HTML节点的CssSelector、HTML节点的属性和/或文本特征特征而形成的;相关属性包括:
用RegionNode节点表示区块,并增加RootSelector和StartSelector属性作为区块的查找规则,用于找到一个或多个包含目标区块节点的候选节点,这两个属性的属性值都是CssSelector;在生成某个节点的CssSelector时忽略容易变化的通用样式类名,忽略HTML元素中包含随机数字的ID;其中RootSelector属性用于定位本区块内容的最深公共父节点,当此父节点包含其他区块内容时,通过StartSelector属性指定此区块在父节点中的定位CssSelector;
在RegionNode节点中新增Feature子节点作为此区块的匹配规则,用于对RootSelector和StartSelector属性筛选出的多个节点进行过滤,最终匹配到一个或多个HTML节点作为区块根节点;Feature子节点的属性包括Selector、SearchKey、SearchPattern和AttrValueFilters;使用Selector属性对候选节点进行子节点查找,如查找到则使用SearchKey属性检查子节点的InnerText是否包含指定的文本,或使用SearchPattern属性匹配模式,或使用AttrValueFilters属性针对子节点的属性进行匹配过滤;将第一个通过Feature子节点匹配到的节点作为区块的初始目标节点,然后自动向后拓展同级或父级的后续HTML节点,在遇到下个区块的初始目标节点前停止,将初始目标节点和拓展节点作为区块的根节点。
进一步的,步骤S3包括:
在RegionNode节点下设置Record子节点,表示条目的抽象,Record子节点的RocordSelector属性作为条目的查找规则,指定一个CssSelector用于在区块内初步查找条目的候选节点,再通过RecordFeatureID属性指向一个Feature子节点作为条目的匹配规则,对RecordSelector属性查找的多个候选节点进行过滤匹配,此Feature子节点的属性名称与区块的匹配规则中的Feature子节点相同,但属性值不同;
如果是单条区块,直接将Rocord子节点的所有属性留空,以将区块的所有根节点作为一个条目提取,并以单个字典形式返回条目的提取结果;如果是多条区块,为Rocord子节点的RocordSelector和RecordFeatureId属性设置为非空值,以匹配多个条目各自的根节点,每个条目的提取结果以字典形式返回,区块的提取结果以列表返回,列表中每一项是字典。
进一步的,步骤S4包括:
若要提取某个字段,则在Record子节点下增加KeyNode表示定位节点;设置Selector属性作为定位节点的查找规则,其属性值是基于Record子节点的相对CssSelector,用于查找包含定位HTML节点的若干个候选节点;设置SearchKey、SearchPattern和/或AttrValueFilters属性作为定位节点的匹配规则,从若干个候选节点中过滤匹配到目标定位节点,和Feature子节点中同名属性作用相同。
进一步的,步骤S5包括:
字段节点表示网页上展示某个字段内容的一个或多个节点;以ContentNode表示字段节点,其VariableKey属性表示字段节点ContentNode的名称;字段节点ContentNode是定位节点KeyNode的子节点,故针对字段节点ContentNode,设置ParentSelector、PrevSelector、NextSelector、ValueSelector属性作为从定位节点KeyNode到字段节点ContentNode的查找规则,分别表示从定位节点KeyNode出发往父节点、同级前一个、同级后一个、子节点的移动查找路径,以灵活处理定位节点KeyNode和字段节点ContentNode任意位置关系;设置AttrValueFilters作为从定位节点KeyNode到字段节点ContentNode的匹配规则,从查找的候选节点中过滤匹配到目标HTML节点;
针对字段节点ContentNode,当某个字段值由多个同级HTML节点组成,且已通过从定位节点KeyNode到字段节点ContentNode的查找规则和匹配规则找到包含字段值的第一个HTML节点时,增加ExpandSelector和ExpandBeforeSelector属性用于字段内容的拓展,从而方便地提取长文本字段或文章内容;ExpandSelector属性用于当字段节点ContentNode的最后一个节点有固定CssSelector特征时,指定最后节点的CssSelector特征;ExpandBeforeSelector属性用于最后一个节点没有固定CssSelector特征,但最后节点的下一个节点有固定的CssSelector特征时,指定下一个节点的CssSelector特征。
进一步的,步骤S6包括:
按具体的提取任务不同,设置不同的实现逻辑;针对简单的数据提取任务,采用规则或简单的机器学习方法,其中规则包括正则表达式和词法分析规则,简单的机器学习方法包括命名实体识别和文本分类;针对复杂的数据提取任务,结合规则、机器学习和自然语言处理方法进行处理。
进一步的,步骤S6中:
字段涉及的HTML元素范围初步定位后,根据字段特征和内容特点,将其内部文本InnerText、内部源码InnerHTML或节点属性作为字段值的提取来源,设置ExtractorType和ExtractorExpression属性,分别表示此字段的提取方式和提取表达式,ExtractorType属性可选值是split和regex,表示分割提取和正则提取,分别适用于简单字段和复杂字段的情况;
针对不固定且没有明确特征的节点,采用基于机器学习的识别方法,只需用字段节点ContentNode匹配此部分整体,其字段名称VariableKey设为auto,使用分割符分割为多个短文本字符串,然后通过一个预训练的短文本分类模型输出其字段名称;或使用基于命名实体识别方法,直接从候选文本中找到各个字段的起始和终止位置;其中,短文本分类模型是相对于长文本的分类而言的,生成短文本分类模型的方法包括SVM支持向量机、神经网络和/或决策树。
进一步的,步骤S7包括:
得到每个样本网页的字段信息提取结果后,针对每个样本网页,基于字段值搜索匹配的方法,从样本网页中定位到包含此字段的HTML元素;在所有包含此字段的HTML元素的data-fields属性中,记录此字段名称和所属区块;
针对标记了多个区块和字段的HTML节点,检查周围HTML节点中各个区块的占比,只保留占比多的区块名称和字段名称;
针对标记完且每个标记的HTML元素归属字段和区块唯一的网页,自上而下遍历被标记的节点,对于一个连续的区块节点集合,找到其最深公共父节点,如果此父节点包含且仅包含此区块的元素,则将此父节点作为此区块RegionNode节点对应的HTML元素,为其设置RootSelector和Feature特征以进行定位;如果此父节点的子节点中还包括其他区块的节点,则设置StartSelector匹配当前区块的开始位置;
根据字段信息提取结果的数据类型判断此区块是多条区块还是单条区块,如果是多条区块,则根据某条的标记结果为Record子节点设置RecordSelector和对应的Feature节点以精确定位条目的位置;
针对各个字段周围未被标记的文本字段,如果在多个样本网页中都存在且文本相同,则是固定的文本特征,能够作为附近字段的定位节点KeyNode;或者某些字段的公共父亲节点,如果有区块内唯一的ID或Class,也能够作为定位节点KeyNode;
确定每个字段的定位节点KeyNode后,从定位节点KeyNode出发,计算与字段节点的最近路径并通过ParentSelector、PrevSelector和NextSelector保存;最后检查字段,如果跨多个HTML元素则通过ExpandSelector或ExpandBeforeSelector属性进行字段内容的拓展。
进一步的,步骤S9包括:
针对来自相同的域名且具有相似的网页请求路径,在制作和更新模板时,一并维护其信息,包括对应的域名、请求路径正则、文本特征要求、ID和/或特有的Class;
在收到新的网页时,通过域名、路径和文本特征定位到对应的模板并进行字段的提取。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述一种复杂网页结构化信息精确提取方法的步骤。
一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现上述一种复杂网页结构化信息精确提取方法的步骤。
本发明的有益效果在于:
(1)现有技术中虽然已有很多针对网页结构化信息提取的方法,但有些是使用的方法比较简单,只利用了XPath或CssSelector信息,无法处理节点索引不固定的情况;有些基于DOM相似度的方法很容易受可选节点的影响导致相似度不足;有些基于无格式文本的提取方案是一种通用的字段信息提取方案,在准确度上难以达到要求。本发明基于复杂网页特点,将其划分为多个区块,并利用定位节点的固有特征,提高了字段节点定位准确度,可以用于提取各类资讯类网页、简单属性网页、复杂网页等各类网页数据,准确率达99.9%,远超同类技术方案。
(2)在节点定位方面,本发明使用不含索引、不含隔代选择器的严格CssSelector,结合HTML元素任意属性、文本等特征进行过滤定位,避免了因为节点增加或缺失造成的定位不准确问题。
(3)本发明提出了一种网页模板的自动化生成方法,可以很大程度上解决模板维护成本高的问题,从而在维护成本和准确性之间找到了较好的平衡。
附图说明
图1是本发明实施例1的复杂网页结构化信息精确提取方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现说明本发明的具体实施方式。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明,即所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明涉及的相关技术用语的说明如下:
Feature节点:用于设置匹配规则,被RegionNode和Record引用,包含Selector、SearchKey、SearchPattern和AttrValueFilter属性,用于对候选节点进行筛选匹配。
AttrValueFilters:属性值筛选器,对HTML节点的属性进行筛选匹配,可指定多个筛选属性,以“|”隔开,在Feature、KeyNode、ContentNode中使用;
SearchKey:文本特征筛选器,用于在候选的HTML节点中检查其InnerText属性是否包含给定的文本特征,多个文本特征以“,”隔开,在Feature、KeyNode中使用。
SearchPattern:正则文本特征筛选器,用于在候选的HTML节点中检查其InnerText属性是否符合给定的文本特征模式,在Feature、KeyNode中使用。
VariableKey:区块名或字段名,在RegionNode和ContentNode中使用。
ExpandSelector:字段值拓展选择器,当某个字段值跨多个HTML节点时,如果最后一个节点有固定的CssSelector特征,可用此属性匹配其结束位置,在ContentNode中使用。
ExpandBeforeSelector:字段值拓展截止选择器,当某个字段值跨多个HTML节点,且最后一个节点没有固定的CssSelector特征,且下一个节点有固定的CssSelector特征,可用此属性匹配下一个节点的CssSelector特征,以得到其结束位置,在ContentNode中使用。
实施例1
如图1所示,本实施例提供了一种复杂网页结构化信息精确提取方法,包括以下步骤:
S1. 针对目标网页,收集一批样本网页;
S2. 根据样本网页制定各个区块的查找规则和匹配规则;
S3. 结合区块情况,确定条目的查找规则和匹配规则;如果是多条区块,则使用条目的查找规则和匹配规则查找匹配每个条目,否则将根节点作为此区块的唯一条目;
S4. 在区块内,确定定位节点的查找规则和匹配规则;
S5. 针对字段节点,确定从定位节点到此字段节点的查找规则和匹配规则;
S6. 通过基于规则或机器学习的方法自动提取各个样本网页中的字段信息,其中规则包括正则表达式和词法分析规则;
S7. 根据提取的字段信息自动生成解析模板;
S8. 对自动生成的解析模板进行校对纠正;
S9. 针对任意HTML网页,根据域名、路径和文本特征选择对应的模板解析提取。
本发明最关键的内容有两部分:
1)将复杂网页分区块应用局部提取规则,且借助定位节点查找字段内容节点,可以针对各类复杂网页进行准确提取;
2)节点定位方面,使用不含索引、不含隔代选择器的严格CssSelector,结合HTML元素任意属性、文本等特征进行过滤定位,避免了因为节点增加或缺失造成的定位不准确问题。
上述两部分关键内容贯穿于步骤S2~S5中。步骤S2~S5是本发明的核心,解决了现有技术在提取复杂网页或节点不固定网页的结构化信息时准确率不高、容易错漏的问题。步骤S6、S7为解析模板的自动化维护提供了一种方法,解决了模板的维护和生成成本高问题。
具体的,本实施例将选取简历详情网页作为复杂网页的一种进行解释说明,需要注意的是,本发明同样适用于资讯类网页、简单属性网页和复杂网页等各种形式的网页。
S1. 针对目标网页,收集一批样本网页。
在现代的动态网页技术中,一般在服务器端维护有网站各个页面的网页模板,其中的字段值以变量或表达式表示,在浏览器请求展示某个数据时,服务器从数据存储中找到此数据的所有信息时,按变量或表达式替换网页模板中的变量或表达式。所以经常可以发现上百万个网页的样式或DOM结构完全一样的情况,因为这些都是来自一个网页模板。
解析模板是针对某种样式的网页定制的,如果要精确提取其他网站或其他样式的网页,应当针对新样式的网页制作一个新的解析模板。
本实施例针对要处理的目标网页,收集一批样式与DOM(Document Object Model文档对象模型)结构相似,但数据不同的网页作为样本网页。样本网页数量以3~7个为宜,应当都是字段比较丰富的网页,从而能覆盖各种字段变化情况。具体到简历详情页来说,有些简历内容较少,只包含部分个人信息和教育信息;有些则内容丰富,包含个人信息、求职意向、教育、工作、实习、项目等十几个区块。所以在样本选择时应尽量选择内容较丰富的,从而确保出现的字段都能准确提取。
S2. 根据样本网页制定各个区块的查找规则和匹配规则。
区块作为网页中模块化信息的抽象对象,可以覆盖网页中的一部分区域,然后针对此区域可以应用区块内的字段提取规则,从而避免从整个网页中全局匹配字段提取规则,提高了提取效率和准确性。
一些资讯类网页一般只有标题、发布时间、来源、正文等字段,可以直接作为一个区块提取;一些属性不多的网页如商品介绍页,一般包括主要信息、详细参数、图文介绍三部分,可以作为三个区块提取;一些复杂的网页如简历详情页,涉及个人信息、求职意向、工作经历、教育经历、实习经历、项目经历、管理经历、获奖经历、技能信息、语言信息、证书信息、在校实践、校外实践、附加信息等十几个部分,故可以针对每个部分设置区块提取。
本实施例的模板可以用XML、JSON、YML等各种常见的配置文件格式表示,现以XML格式为例进行说明,区块可以用RegionNode节点表示,其属性VariableKey表示区块名,用于区分不同区块的提取结果。
相比XPath,CssSelector对节点索引不敏感,且能方便地利用到HTML节点的Class等重要属性,故本实施例使用CssSelector来进行对字段节点的初步定位。有些HTML元素的Class中会包含一些通用的样式控制类名,如“mr20”一般用于表示“margin-right:20px”,这种通用样式类名是容易变化的,所以本实施例在生成某个节点的CssSelector时忽略容易变化的通用样式类名,以及HTML元素中包含随机数字的ID。
有的区块在网页中的区域可以找到一个节点,包含且仅包含此区块,这时可以用一个CssSelector定位到此区块根节点;然而有些区块找到的最深公共父节点,除了包含本区块内容,还包含其他区块内容,这时就无法通过一个CssSelector对此区块进行准确定位。故本实施例针对模板中RegionNode节点,增加RootSelector和StartSelector属性作为区块的查找规则,用于找到一个或多个包含目标区块节点的候选节点,这两个属性的属性值都是CssSelector。其中RootSelector属性用于定位本区块内容的最深公共父节点,当此父节点包含其他区块内容时,通过StartSelector属性指定此区块在父节点中的定位CssSelector。
单纯使用CssSelector是无法精确定位一个节点的,因为同一层级的多个节点可能有相同的样式,也有相同的CssSelector,所以通过CssSelector可能筛选出多个候选节点。故本实施例在RegionNode节点中新增Feature子节点作为此区块的匹配规则,用于对RootSelector和StartSelector筛选出的多个节点进行过滤,最终匹配到一个或多个HTML节点作为区块根节点;Feature子节点的属性包括Selector、SearchKey、SearchPattern和AttrValueFilters;使用Selector属性对候选节点进行子节点查找,如查找到则使用SearchKey属性检查子节点的InnerText是否包含指定的文本,或使用SearchPattern属性匹配模式,或使用AttrValueFilters属性针对子节点的属性进行匹配过滤;将第一个通过Feature子节点匹配到的节点作为区块的初始目标节点,然后自动向后拓展同级或父级的后续HTML节点,在遇到下个区块的初始目标节点前停止,将初始目标节点和拓展节点作为区块的根节点。
如有一个简单HTML网页内容如下:
<div class="resume-content">
<div class="section">
<div class="title">求职意向</div>
<div class="body">
<span class="job">前端开发</span>
<span class="expectSalary">15K-25K/月</span>
</div>
</div>
<div class="section">
<div class="title">工作经历</div>
<div class="body">
<div class="item">
<div class="main">
<span class="company">金蝶软件(中国)有限公司</span>
<span>前端开发工程师</span>
</div>
</div>
<div class="item">
<div class="main">
<span class="company">武汉小安科技有限公司</span>
</div>
</div>
</div>
</div>
</div>
包含求职意向和工作经历两个区块,有相同的CssSelector查找路径:div.resume-content >div.section,所以要通过StartFeatureId指定Feature匹配规则,则此文档中区块的查找匹配可如下描述:
<RegionNode Id="region1" VariableKey="JobSearchIntention"StartSelector="div.resume-content > div.section" StartFeatureId="fea1">
<Feature Id="fea1" Selector="div.title" SearchKey="求职意向"/>
<Record Id="record1"></Record>
</RegionNode>
<RegionNode Id="region2" VariableKey="WorkExperience" StartSelector="div.resume-content > div.section" StartFeatureId="fea2">
<Feature Id="fea2" Selector="div.title" SearchKey="工作经历"/>
<Record Id="record2"></Record>
</RegionNode>
S3. 结合区块情况,确定条目的查找规则和匹配规则;如果是多条区块,则使用条目的查找规则和匹配规则查找匹配每个条目,否则将根节点作为此区块的唯一条目。
以简历信息为例,有的区块如个人信息或求职意向,区块内的字段都是不重复的,可以视为单条;然而一些区块如工作经历,一般会有多段形式相同但数据不同的信息,故需要每段作为一条独立提取,然后将结果以列表形式返回,列表中每一项是一个字典。
本实施例在RegionNode节点下设置Record子节点,表示条目的抽象,Record子节点的RocordSelector属性作为条目的查找规则,指定一个CssSelector用于在区块内初步查找条目的候选节点,再通过RecordFeatureID属性指向一个Feature子节点作为条目的匹配规则,对RecordSelector属性查找的多个候选节点进行过滤匹配,此Feature子节点的属性名称与区块的匹配规则中的Feature子节点相同,但属性值不同。
如果是单条区块,直接将Rocord子节点的所有属性留空,以将区块的所有根节点作为一个条目提取,并以单个字典形式返回条目的提取结果;如果是多条区块,为Rocord子节点的RocordSelector和RecordFeatureId属性设置为非空值,以匹配多个条目各自的根节点,每个条目的提取结果以字典形式返回,区块的提取结果以列表返回,列表中每一项是字典。
设有HTML网页内容如下:
<div class="section">
<div class="title">工作经历</div>
<div class="body">
<div class="item">三年开发经验,在移动端、PC端等有较丰富经验</div>
<div class="item">
<div class="main">
<span class="company">金蝶软件(中国)有限公司</span>
<span>前端开发工程师</span>
<span>
<span>2018.06~</span><span>2021.09</span>
<span class="stay">(3年3个月)</span>
</span>
</div>
</div>
<div class="item">
<div class="main">
<span class="company">武汉小安科技有限公司</span>
</div>
</div>
</div>
</div>
工作经历区块包含两条,需要指定条目的查找规则:div.body>div.item,此规则可匹配到三个节点,第一个不是条目节点,所以需要指定RecordFeatureId过滤匹配正确的条目,规则可定义如下:
<RegionNode Id="region2" VariableKey="WorkExperience" StartSelector="div.resume-content > div.section" StartFeatureId="fea2">
<Feature Id="fea2" Selector="div.title" SearchKey="工作经历"/>
<Feature Id="fea3" Selector="div.main"/>
<Record Id="record2" RocordSelector="div.body > div.item"RecordFeatureId="fea3">
</Record>
</RegionNode>
S4. 在区块内,确定定位节点的查找规则和匹配规则。
在调研大量复杂网页后发现,虽然一些字段节点在整个网页中的位置不是固定的,索引等可能发生变化,无法利用XPath或CssSelector直接定位到,但其相对于周围一部分特征节点的位置变化不大,而这些特征节点一般是父节点或周边节点,具有一些固定不变的特征,如Class唯一,或InnerText固定不变,这样的节点称为定位节点。
因此若要提取某个字段,则在Record子节点下增加KeyNode表示定位节点;设置Selector属性作为定位节点的查找规则,其属性值是基于Record子节点的相对CssSelector,用于查找包含定位HTML节点的若干个候选节点;设置SearchKey、SearchPattern和/或AttrValueFilters属性作为定位节点的匹配规则,从若干个候选节点中过滤匹配到目标定位节点,和Feature子节点中同名属性作用相同。
对于步骤S4中的HTML内容,如要提取公司和职位字段的内容,因为公司HTML节点有固定的class特征,可以将公司所在的HTML节点作为定位节点。可定义规则如下:
<Record Id="record2" RocordSelector="div.body > div.item"RecordFeatureId="fea3">
<KeyNode Selector="div.main > div.company">
</KeyNode>
</Record>
因为可通过公司HTML节点的CssSelector唯一确定一个节点,所以只需给KeyNode指定Selector属性即可。
S5. 针对字段节点,确定从定位节点到此字段节点的查找规则和匹配规则。
字段节点表示网页上展示某个字段内容的一个或多个节点,本实施例以ContentNode表示字段节点,其VariableKey属性表示字段节点ContentNode的名称。字段节点ContentNode是定位节点KeyNode的子节点,故针对字段节点ContentNode,设置ParentSelector、PrevSelector、NextSelector、ValueSelector属性作为从定位节点KeyNode到字段节点ContentNode的查找规则,分别表示从定位节点KeyNode出发往父节点、同级前一个、同级后一个、子节点的移动查找路径,以灵活处理定位节点KeyNode和字段节点ContentNode任意位置关系。设置AttrValueFilters作为从定位节点KeyNode到字段节点ContentNode的匹配规则,从查找的候选节点中过滤匹配到目标HTML节点。
由于字段的内容可能在网页中涉及多个元素,有时候甚至可能会和其他字段的内容同属于一个父节点,所以本实施例针对字段节点ContentNode,当某个字段值由多个同级HTML节点组成,且已通过从定位节点KeyNode到字段节点ContentNode的查找规则和匹配规则找到包含字段值的第一个HTML节点时,增加ExpandSelector和ExpandBeforeSelector属性用于字段内容的拓展,从而方便地提取长文本字段或文章内容。ExpandBeforeSelector属性用于最后一个节点没有固定CssSelector特征,但最后节点的下一个节点有固定的CssSelector特征时,指定下一个节点的CssSelector特征。
针对步骤S4中的HTML内容,如要提取公司、职位和时间段字段值,可在公司的定位节点下,增加如下规则:
<KeyNode Selector="div.main > div.company">
<ContentNode VariableKey="company" ValueSelector="."/>
<ContentNode VariableKey="job" NextSelector="span"/>
<ContentNode VariableKey="dateRange" NextSelector="span|2"ValueSelector="span" ExpandBeforeSelector="span.stay"/>
</KeyNode>
职位字段需要从定位节点后移一个span,所以指定NextSelector属性;时间段节点需要后移两个span,再从内部选择两个子节点,所以通过NextSelector后移,再经ValueSelector选择第一个子节点后,再使用ExpandBeforeSelector属性拓展到“(3年3个月)”节点的前面。
S6. 通过基于规则或机器学习的方法自动提取各个样本网页中的字段信息,其中规则包括正则表达式和词法分析规则。
大部分字段在定位到对应的HTML元素后,直接提取即可作为字段值。但有些字段因为内容不规范或多个字段混在一起,需要对提取的结果进行验证、清洗。简单的字段如薪资、企业规模等可通过正则验证和提取。一些更复杂的内容可基于词法分析或机器学习模型的方法进行提取。
设有HTML网页如下:
<div class="props">
<span>基本信息:</span>
<span class="chip">男</span>
<span class="chip">现居北京</span>
</div>
要提取现居住地字段,在匹配到HTML节点后,还需指定字段值的提取表达式以去除干扰文本“现居”,规则可制定如下:
<KeyNode Selector="div.props > span.chip" SearchKey="现居">
</KeyNode>
使用正则表达式规则时,约定只将命名分组value匹配到的文本作为字段值,以忽略干扰内容。
在实际应用中,涉及的样式和网站是非常广泛的,就需要针对每种样式的网页定制一个模板,存在一定的维护成本。
本实施例提出了一种自动化生成解析模板的方法,可以将上述的模板制作过程自动化,模板生成后只需要进行人工校对和纠正即可使用,大大减轻了维护成本。解析模板的自动化生成分两个阶段:基于规则或机器学习方法的通用字段提取方法,以及根据提取的字段信息自动生成解析模板。
其中,基于规则或机器学习的通用字段提取方法具体为:按具体的提取任务不同,应当有不同的实现逻辑。如提取商品信息、新闻资讯和职位信息等,针对字段的要求不同,需要根据任务制定相应的提取方案和策略。针对简单的数据提取任务,采用规则或简单的机器学习方法,其中规则包括正则表达式和词法分析规则,简单的机器学习方法包括命名实体识别和文本分类;针对复杂的数据提取任务,结合规则、机器学习和自然语言处理方法进行处理。
优选的,字段涉及的HTML元素范围初步定位后,根据字段特征和内容特点,将其内部文本InnerText、内部源码InnerHTML或节点属性作为字段值的提取来源,设置ExtractorType和ExtractorExpression属性,分别表示此字段的提取方式和提取表达式,ExtractorType属性可选值是split和regex,表示分割提取和正则提取,分别适用于简单字段和复杂字段的情况。
优选的,针对不固定且没有明确特征的节点,如简历信息中工作经历的企业类型、行业、薪资、规模、所属部门等,很多招聘网站会将其并列显示,哪一项为空则不显示,且在class或其他HTML属性上没有可分辨其类型的特征,这时候如果按索引固定取第一个作为企业类型,在企业类型的字段值为空的时候可能会误提取为行业。针对此类节点,本实施例采用基于机器学习的识别方法,只需用字段节点ContentNode匹配此部分整体,其字段名称VariableKey设为auto,使用分割符分割为多个短文本字符串,然后通过一个预训练的短文本分类模型输出其字段名称。其中,短文本分类模型是相对于资讯、文章等长文本的分类而言的,处理的词长度一般在10~200个左右,生成短文本分类模型的方法包括SVM支持向量机、神经网络和/或决策树。此外,也可以采用基于命名实体识别方法,直接从候选文本中找到各个字段的起始和终止位置。
优选的,以简历信息为例,可使用一种基于深度学习的通用简历解析方法,详见CN111737969 B。
通用的信息提取方法虽然可以不加改动地适用于各种样式的网页,但受限于规则完善度或机器学习模型的性能,针对复杂的提取任务,一般准确度只有95%左右,个别可以达到98%,而本实施例提出的复杂网页结构化信息精确提取方法准确率一般可达99.9%,大大减少了人工干预的成本。
S7. 根据提取的字段信息自动生成解析模板。
得到每个样本网页的字段信息提取结果后,针对每个样本网页,基于字段值搜索匹配的方法,从样本网页中定位到包含此字段的HTML元素;在所有包含此字段的HTML元素的data-fields属性中,记录此字段名称和所属区块。
针对标记了多个区块和字段的HTML节点,检查周围HTML节点中各个区块的占比,只保留占比多的区块名称和字段名称。
针对标记完且每个标记的HTML元素归属字段和区块唯一的网页,自上而下遍历被标记的节点,对于一个连续的区块节点集合,找到其最深公共父节点,如果此父节点包含且仅包含此区块的元素,则将此父节点作为此区块RegionNode节点对应的HTML元素,为其设置RootSelector和Feature特征以进行定位;如果此父节点的子节点中还包括其他区块的节点,则设置StartSelector匹配当前区块的开始位置。
根据字段信息提取结果的数据类型判断此区块是多条区块还是单条区块,如果是多条区块,则根据某条的标记结果为Record子节点设置RecordSelector和对应的Feature节点以精确定位条目的位置。
针对各个字段周围未被标记的文本字段,如果在多个样本网页中都存在且文本相同,则是固定的文本特征,能够作为附近字段的定位节点KeyNode;或者某些字段的公共父亲节点,如果有区块内唯一的ID或Class,也能够作为定位节点KeyNode。
确定每个字段的定位节点KeyNode后,从定位节点KeyNode出发,计算与字段节点的最近路径并通过ParentSelector、PrevSelector和NextSelector保存;最后检查字段,如果跨多个HTML元素则通过ExpandSelector或ExpandBeforeSelector属性进行字段内容的拓展。
S8. 对自动生成的解析模板进行校对纠正。
自动生成的解析模板虽然可以自动完成大部分字段的规则制定,但对于一些复杂字段或经过清洗后的字段,可能出现定位错误,故需要对生成的模板进行校对纠正。
S9. 针对任意HTML网页,根据域名、路径和文本特征选择对应的模板解析提取。
由于一个模板只能精确提取其对应样式的网页,所以在收到新的网页时,需要确定其应该采取哪种模板进行提取。
一个样式的网页一般是来自相同的域名,且具有相似的网页请求路径,其中一些网页一般还有固定的文本内容节点。所以在制作和更新模板时,一并维护其信息,包括对应的域名、请求路径正则、文本特征要求、ID和/或特有的Class;
在收到新的网页时,通过域名、路径和文本特征定位到对应的模板并进行字段的提取。
本实施例可以解决各种行业和各类任务的普通和复杂网页数据提取问题,故字段提取的输出格式可根据具体任务进行调整。
实施例2
本实施例在实施例1的基础上:
本实施例提供了一种计算机设备,包括存储器和处理器,该存储器存储有计算机程序,该处理器执行该计算机程序时实现实施例1的一种复杂网页结构化信息精确提取方法的步骤。
其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。
实施例3
本实施例在实施例1的基础上:
本实施例提供了一种计算机可读存储介质,存储有计算机程序,该计算机程序被处理器执行时实现实施例1的一种复杂网页结构化信息精确提取方法的步骤。
其中,计算机程序可以为源代码形式、对象代码形式、可执行文件或者某些中间形式等。存储介质包括:能够携带计算机程序代码的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,存储介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,存储介质不包括电载波信号和电信信号。
以上所述仅是本发明的优选实施方式,应当理解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,而可用于各种其他组合、修改和环境,并能够在本文所述构想范围内,通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护范围内。
需要说明的是,对于前述的方法实施例,为了简便描述,故将其表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
Claims (12)
1.一种复杂网页结构化信息精确提取方法,其特征在于,包括以下步骤:
S1. 针对目标网页,收集一批样本网页;
S2. 根据样本网页制定各个区块的查找规则和匹配规则;
S3. 结合区块情况,确定条目的查找规则和匹配规则;如果是多条区块,则使用条目的查找规则和匹配规则查找匹配每个条目,否则将根节点作为此区块的唯一条目;
S4. 在区块内,确定定位节点的查找规则和匹配规则;
S5. 针对字段节点,确定从定位节点到此字段节点的查找规则和匹配规则;
S6. 通过基于规则或机器学习的方法自动提取各个样本网页中的字段信息,其中规则包括正则表达式和词法分析规则;
S7. 根据提取的字段信息自动生成解析模板;
S8. 对自动生成的解析模板进行校对纠正;
S9. 针对任意HTML网页,根据域名、路径和文本特征选择对应的模板解析提取。
2.根据权利要求1所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S1包括:
针对要处理的目标网页,收集一批样式与DOM即文档对象模型结构相似,但数据不同的网页作为样本网页;样本网页应当是字段丰富的网页,从而覆盖各种字段变化情况。
3.根据权利要求2所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S2中各个区块的查找规则和匹配规则是根据目标节点的DOM特征在指定的属性上记录HTML节点的CssSelector、HTML节点的属性和/或文本特征而形成的;相关属性包括:
用RegionNode节点表示区块,并增加RootSelector和StartSelector属性作为区块的查找规则,用于找到一个或多个包含目标区块节点的候选节点,这两个属性的属性值都是CssSelector;在生成某个节点的CssSelector时忽略容易变化的通用样式类名,忽略HTML元素中包含随机数字的ID;其中RootSelector属性用于定位本区块内容的最深公共父节点,当此父节点包含其他区块内容时,通过StartSelector属性指定此区块在父节点中的定位CssSelector;
在RegionNode节点中新增Feature子节点作为此区块的匹配规则,用于对RootSelector和StartSelector属性筛选出的多个节点进行过滤,最终匹配到一个或多个HTML节点作为区块根节点;Feature子节点的属性包括Selector、SearchKey、SearchPattern和AttrValueFilters;使用Selector属性对候选节点进行子节点查找,如查找到则使用SearchKey属性检查子节点的InnerText是否包含指定的文本,或使用SearchPattern属性匹配模式,或使用AttrValueFilters属性针对子节点的属性进行匹配过滤;将第一个通过Feature子节点匹配到的节点作为区块的初始目标节点,然后自动向后拓展同级或父级的后续HTML节点,在遇到下个区块的初始目标节点前停止,将初始目标节点和拓展节点作为区块的根节点。
4.根据权利要求3所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S3包括:
在RegionNode节点下设置Record子节点,表示条目的抽象,Record子节点的RocordSelector属性作为条目的查找规则,指定一个CssSelector用于在区块内初步查找条目的候选节点,再通过RecordFeatureID属性指向一个Feature子节点作为条目的匹配规则,对RecordSelector属性查找的多个候选节点进行过滤匹配,此Feature子节点的属性名称和权利要求3中的Feature子节点相同,但属性值不同;
如果是单条区块,直接将Rocord子节点的所有属性留空,以将区块的所有根节点作为一个条目提取,并以单个字典形式返回条目的提取结果;如果是多条区块,为Rocord子节点的RocordSelector和RecordFeatureId属性设置为非空值,以匹配多个条目各自的根节点,每个条目的提取结果以字典形式返回,区块的提取结果以列表返回,列表中每一项是字典。
5.根据权利要求4所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S4包括:
若要提取某个字段,则在Record子节点下增加KeyNode表示定位节点;设置Selector属性作为定位节点的查找规则,其属性值是基于Record子节点的相对CssSelector,用于查找包含定位HTML节点的若干个候选节点;设置SearchKey、SearchPattern和/或AttrValueFilters属性作为定位节点的匹配规则,从若干个候选节点中过滤匹配到目标定位节点,和Feature子节点中同名属性作用相同。
6.根据权利要求5所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S5包括:
字段节点表示网页上展示某个字段内容的一个或多个节点;以ContentNode表示字段节点,其VariableKey属性表示字段节点ContentNode的名称;字段节点ContentNode是定位节点KeyNode的子节点,故针对字段节点ContentNode,设置ParentSelector、PrevSelector、NextSelector、ValueSelector属性作为从定位节点KeyNode到字段节点ContentNode的查找规则,分别表示从定位节点KeyNode出发往父节点、同级前一个、同级后一个、子节点的移动查找路径,以灵活处理定位节点KeyNode和字段节点ContentNode任意位置关系;设置AttrValueFilters作为从定位节点KeyNode到字段节点ContentNode的匹配规则,从查找的候选节点中过滤匹配到目标HTML节点;
针对字段节点ContentNode,当某个字段值由多个同级HTML节点组成,且已通过从定位节点KeyNode到字段节点ContentNode的查找规则和匹配规则找到包含字段值的第一个HTML节点时,增加ExpandSelector和ExpandBeforeSelector属性用于字段内容的拓展,从而方便地提取长文本字段或文章内容;ExpandSelector属性用于当字段节点ContentNode的最后一个节点有固定CssSelector特征时,指定最后节点的CssSelector特征;ExpandBeforeSelector属性用于最后一个节点没有固定CssSelector特征,但最后节点的下一个节点有固定的CssSelector特征时,指定下一个节点的CssSelector特征。
7.根据权利要求6所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S6包括:
按具体的提取任务不同,设置不同的实现逻辑;针对简单的数据提取任务,采用规则或简单的机器学习方法,其中规则包括正则表达式和词法分析规则,简单的机器学习方法包括命名实体识别和文本分类;针对复杂的数据提取任务,结合规则、机器学习和自然语言处理方法进行处理。
8.根据权利要求7所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S6中:
字段涉及的HTML元素范围初步定位后,根据字段特征和内容特点,将其内部文本InnerText、内部源码InnerHTML或节点属性作为字段值的提取来源,设置ExtractorType和ExtractorExpression属性,分别表示此字段的提取方式和提取表达式,ExtractorType属性可选值是split和regex,表示分割提取和正则提取,分别适用于简单字段和复杂字段的情况;
针对不固定且没有明确特征的节点,采用基于机器学习的识别方法,只需用字段节点ContentNode匹配此部分整体,其字段名称VariableKey设为auto,使用分割符分割为多个短文本字符串,然后通过一个预训练的短文本分类模型输出其字段名称;或使用基于命名实体识别方法,直接从候选文本中找到各个字段的起始和终止位置;其中,短文本分类模型是相对于长文本的分类而言的,生成短文本分类模型的方法包括SVM支持向量机、神经网络和/或决策树。
9.根据权利要求8所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S7包括:
得到每个样本网页的字段信息提取结果后,针对每个样本网页,基于字段值搜索匹配的方法,从样本网页中定位到包含此字段的HTML元素;在所有包含此字段的HTML元素的data-fields属性中,记录此字段名称和所属区块;
针对标记了多个区块和字段的HTML节点,检查周围HTML节点中各个区块的占比,只保留占比多的区块名称和字段名称;
针对标记完且每个标记的HTML元素归属字段和区块唯一的网页,自上而下遍历被标记的节点,对于一个连续的区块节点集合,找到其最深公共父节点,如果此父节点包含且仅包含此区块的元素,则将此父节点作为此区块RegionNode节点对应的HTML元素,为其设置RootSelector和Feature特征以进行定位;如果此父节点的子节点中还包括其他区块的节点,则设置StartSelector匹配当前区块的开始位置;
根据字段信息提取结果的数据类型判断此区块是多条区块还是单条区块,如果是多条区块,则根据某条的标记结果为Record子节点设置RecordSelector和对应的Feature节点以精确定位条目的位置;
针对各个字段周围未被标记的文本字段,如果在多个样本网页中都存在且文本相同,则是固定的文本特征,能够作为附近字段的定位节点KeyNode;或者某些字段的公共父亲节点,如果有区块内唯一的ID或Class,也能够作为定位节点KeyNode;
确定每个字段的定位节点KeyNode后,从定位节点KeyNode出发,计算与字段节点的最近路径并通过ParentSelector、PrevSelector和NextSelector保存;最后检查字段,如果跨多个HTML元素则通过ExpandSelector或ExpandBeforeSelector属性进行字段内容的拓展。
10.根据权利要求9所述的一种复杂网页结构化信息精确提取方法,其特征在于,步骤S9包括:
针对来自相同的域名且具有相似的网页请求路径,在制作和更新模板时,一并维护其信息,包括对应的域名、请求路径正则、文本特征要求、ID和/或特有的Class;
在收到新的网页时,通过域名、路径和文本特征定位到对应的模板并进行字段的提取。
11.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1-10任一项所述的一种复杂网页结构化信息精确提取方法的步骤。
12.一种计算机可读存储介质,存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-10任一项所述的一种复杂网页结构化信息精确提取方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110701621.2A CN113254751B (zh) | 2021-06-24 | 2021-06-24 | 一种复杂网页结构化信息精确提取方法、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110701621.2A CN113254751B (zh) | 2021-06-24 | 2021-06-24 | 一种复杂网页结构化信息精确提取方法、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113254751A true CN113254751A (zh) | 2021-08-13 |
CN113254751B CN113254751B (zh) | 2021-09-21 |
Family
ID=77189395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110701621.2A Active CN113254751B (zh) | 2021-06-24 | 2021-06-24 | 一种复杂网页结构化信息精确提取方法、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113254751B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113743076A (zh) * | 2021-11-08 | 2021-12-03 | 中关村科技软件股份有限公司 | 一种数据提取方法及系统 |
CN114491164A (zh) * | 2022-01-17 | 2022-05-13 | 广州市玄武无线科技股份有限公司 | 一种树形数据处理方法及系统 |
CN115033822A (zh) * | 2022-06-14 | 2022-09-09 | 壹沓科技(上海)有限公司 | 一种元素定位方法、装置、设备及可读存储介质 |
CN116680444A (zh) * | 2023-08-03 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101561802A (zh) * | 2008-04-18 | 2009-10-21 | 上海复旦光华信息科技股份有限公司 | 网页结构化数据提取方法与系统 |
US20110185273A1 (en) * | 1998-12-18 | 2011-07-28 | Dacosta Gerson Francis | System and method for extracting content elements from multiple Internet sources |
CN102254014A (zh) * | 2011-07-21 | 2011-11-23 | 华中科技大学 | 一种网页特征自适应的信息抽取方法 |
US20120173967A1 (en) * | 2010-12-30 | 2012-07-05 | Opera Software Asa | Method and device for cascading style sheet (css) selector matching |
CN102662969A (zh) * | 2012-03-11 | 2012-09-12 | 复旦大学 | 一种基于网页结构语义的互联网信息对象定位方法 |
CN103020266A (zh) * | 2012-12-25 | 2013-04-03 | 北京奇虎科技有限公司 | 对网页文本内容进行提取的方法和装置 |
CN104268283A (zh) * | 2014-10-21 | 2015-01-07 | 浪潮集团有限公司 | 一种自动解析互联网网页的方法 |
CN104866509A (zh) * | 2014-02-26 | 2015-08-26 | 阿里巴巴集团控股有限公司 | 页面元素的定位方法及装置 |
US20150356302A1 (en) * | 2013-02-25 | 2015-12-10 | Hewlett-Packard Development Company, L.P. | Presentation of user interface elements based on rules |
US20160283461A1 (en) * | 2014-02-26 | 2016-09-29 | Tencent Technology (Shenzhen) Company Limited | Method and terminal for extracting webpage content, and non-transitory storage medium |
US20170286525A1 (en) * | 2016-03-31 | 2017-10-05 | Splunk Inc. | Field Extraction Rules from Clustered Data Samples |
CN107729564A (zh) * | 2017-11-13 | 2018-02-23 | 北京众荟信息技术股份有限公司 | 一种分布式的聚焦网络爬虫网页爬取方法及系统 |
CN108629043A (zh) * | 2018-05-14 | 2018-10-09 | 平安科技(深圳)有限公司 | 网页目标信息的提取方法、装置及存储介质 |
CN104217036B (zh) * | 2014-10-08 | 2019-01-15 | 广州华多网络科技有限公司 | 一种网页内容提取方法和设备 |
CN109857956A (zh) * | 2019-01-25 | 2019-06-07 | 四川大学 | 基于标签和分块特征的新闻网页关键信息自动抽取方法 |
CN110020038A (zh) * | 2017-08-01 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 网页信息提取方法、装置、系统及电子设备 |
CN110069618A (zh) * | 2017-11-16 | 2019-07-30 | 广州市万隆证券咨询顾问有限公司 | 一种抽取网页内容的方法及系统 |
CN110457579A (zh) * | 2019-07-30 | 2019-11-15 | 四川大学 | 基于模板和分类器协同工作的网页去噪方法及系统 |
CN111966881A (zh) * | 2020-10-14 | 2020-11-20 | 成都数联铭品科技有限公司 | 一种网页信息提取方法及系统、电子设备 |
CN112597410A (zh) * | 2020-12-10 | 2021-04-02 | 北京明朝万达科技股份有限公司 | 基于规则配置库对网页内容执行结构化提取的方法及装置 |
-
2021
- 2021-06-24 CN CN202110701621.2A patent/CN113254751B/zh active Active
Patent Citations (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110185273A1 (en) * | 1998-12-18 | 2011-07-28 | Dacosta Gerson Francis | System and method for extracting content elements from multiple Internet sources |
CN101561802A (zh) * | 2008-04-18 | 2009-10-21 | 上海复旦光华信息科技股份有限公司 | 网页结构化数据提取方法与系统 |
US20120173967A1 (en) * | 2010-12-30 | 2012-07-05 | Opera Software Asa | Method and device for cascading style sheet (css) selector matching |
CN102254014A (zh) * | 2011-07-21 | 2011-11-23 | 华中科技大学 | 一种网页特征自适应的信息抽取方法 |
CN102662969A (zh) * | 2012-03-11 | 2012-09-12 | 复旦大学 | 一种基于网页结构语义的互联网信息对象定位方法 |
CN103020266A (zh) * | 2012-12-25 | 2013-04-03 | 北京奇虎科技有限公司 | 对网页文本内容进行提取的方法和装置 |
US20150356302A1 (en) * | 2013-02-25 | 2015-12-10 | Hewlett-Packard Development Company, L.P. | Presentation of user interface elements based on rules |
CN104866509A (zh) * | 2014-02-26 | 2015-08-26 | 阿里巴巴集团控股有限公司 | 页面元素的定位方法及装置 |
US20160283461A1 (en) * | 2014-02-26 | 2016-09-29 | Tencent Technology (Shenzhen) Company Limited | Method and terminal for extracting webpage content, and non-transitory storage medium |
CN104217036B (zh) * | 2014-10-08 | 2019-01-15 | 广州华多网络科技有限公司 | 一种网页内容提取方法和设备 |
CN104268283A (zh) * | 2014-10-21 | 2015-01-07 | 浪潮集团有限公司 | 一种自动解析互联网网页的方法 |
US20170286525A1 (en) * | 2016-03-31 | 2017-10-05 | Splunk Inc. | Field Extraction Rules from Clustered Data Samples |
CN110020038A (zh) * | 2017-08-01 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 网页信息提取方法、装置、系统及电子设备 |
CN107729564A (zh) * | 2017-11-13 | 2018-02-23 | 北京众荟信息技术股份有限公司 | 一种分布式的聚焦网络爬虫网页爬取方法及系统 |
CN110069618A (zh) * | 2017-11-16 | 2019-07-30 | 广州市万隆证券咨询顾问有限公司 | 一种抽取网页内容的方法及系统 |
CN108629043A (zh) * | 2018-05-14 | 2018-10-09 | 平安科技(深圳)有限公司 | 网页目标信息的提取方法、装置及存储介质 |
CN109857956A (zh) * | 2019-01-25 | 2019-06-07 | 四川大学 | 基于标签和分块特征的新闻网页关键信息自动抽取方法 |
CN110457579A (zh) * | 2019-07-30 | 2019-11-15 | 四川大学 | 基于模板和分类器协同工作的网页去噪方法及系统 |
CN111966881A (zh) * | 2020-10-14 | 2020-11-20 | 成都数联铭品科技有限公司 | 一种网页信息提取方法及系统、电子设备 |
CN112597410A (zh) * | 2020-12-10 | 2021-04-02 | 北京明朝万达科技股份有限公司 | 基于规则配置库对网页内容执行结构化提取的方法及装置 |
Non-Patent Citations (1)
Title |
---|
袁宇丽: "基于HTML网页的Web信息提取研究", 《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113743076A (zh) * | 2021-11-08 | 2021-12-03 | 中关村科技软件股份有限公司 | 一种数据提取方法及系统 |
CN114491164A (zh) * | 2022-01-17 | 2022-05-13 | 广州市玄武无线科技股份有限公司 | 一种树形数据处理方法及系统 |
CN115033822A (zh) * | 2022-06-14 | 2022-09-09 | 壹沓科技(上海)有限公司 | 一种元素定位方法、装置、设备及可读存储介质 |
CN115033822B (zh) * | 2022-06-14 | 2024-05-17 | 壹沓科技(上海)有限公司 | 一种元素定位方法、装置、设备及可读存储介质 |
CN116680444A (zh) * | 2023-08-03 | 2023-09-01 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
CN116680444B (zh) * | 2023-08-03 | 2024-01-19 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113254751B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113254751B (zh) | 一种复杂网页结构化信息精确提取方法、设备及存储介质 | |
US8868621B2 (en) | Data extraction from HTML documents into tables for user comparison | |
CN112800201B (zh) | 自然语言的处理方法、装置及电子设备 | |
US9031935B2 (en) | Search system, search method, and program | |
US20090125529A1 (en) | Extracting information based on document structure and characteristics of attributes | |
US20090049062A1 (en) | Method for Organizing Structurally Similar Web Pages from a Web Site | |
CN109344355B (zh) | 针对网页变化的自动回归检测与块匹配自适应方法和装置 | |
CN106649557B (zh) | 一种缺陷报告与邮件列表语义关联挖掘方法 | |
Cardoso et al. | An efficient language-independent method to extract content from news webpages | |
CN109857956A (zh) | 基于标签和分块特征的新闻网页关键信息自动抽取方法 | |
CN108959204B (zh) | 互联网金融项目信息抽取方法和系统 | |
CN112818200A (zh) | 基于静态网站的数据爬取及事件分析方法及系统 | |
Cheng et al. | A similarity integration method based information retrieval and word embedding in bug localization | |
CN106372232B (zh) | 基于人工智能的信息挖掘方法和装置 | |
CN114528811A (zh) | 文章内容抽取方法、装置、设备及存储介质 | |
Chu et al. | Automatic data extraction of websites using data path matching and alignment | |
CN111475464B (zh) | 一种自动发现挖掘Web组件指纹的方法 | |
CN110989991B (zh) | 检测应用程序中源代码克隆开源软件的方法及系统 | |
CN109948015B (zh) | 一种元搜索列表结果抽取方法及系统 | |
CN111309930A (zh) | 一种基于表示学习的医学知识图谱实体对齐方法 | |
Guo et al. | RED: Redundancy-Driven Data Extraction from Result Pages? | |
CN113449063B (zh) | 一种构建文档结构信息检索库的方法及装置 | |
Souza et al. | ARCTIC: metadata extraction from scientific papers in pdf using two-layer CRF | |
Gao et al. | Web-based citation parsing, correction and augmentation | |
CN113468339A (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 |