HTML网页属于半结构化数据么,一种抽取网页半结构化数据的方法与流程

技术特征:

1.一种抽取网页半结构化数据的方法,其特征在于,包括以下内容:

下面给出描述中所需的一些定义:

半结构化数据在网页中存在的形式是key-value对应的形式,通常存在3种对应的情况:

Case1情况:key节点,value节点同在一个父节点下

201810953361_2.html

Case2情况:key、value同在一个节点下

key1:value1key2:value2

Case3情况:key节点在同一个父节点下,value节点在同一个父节点下,同时key节点的父节点和value节点的父节点同在一个父节点下

201810953361_2.html

Key节点:key所在的节点

Value节点:value所在的节点;

一、首先需要人工的两个步骤:

①给定一个网站所有页面中,需要进行分析的目标页面的一个url;

②维护一个想抽取的词的词根,用来过滤html中的文字节点,选出其中的key节点;

二、一类网站只需要配置一组关键词,每个网站需要指定各自的目标分析页面的url;

1、首先需要根据指定的url选出一个网站的同栏目下的网页,分析爬取的所有url,以“?”,“&”,“/”,“=”为分隔符切分所有的url,统计所有url分片出现的次数;修改指定目标页的url,以上4个分隔符对url进行切割,高频部分不变,低频部分变为可标记符号,以修改后的url为模板可以选出同类(栏目)的url和url对应的html文本;

2、html文本清洗

2.1、由于语法规则的限制,在html中转义了部分字符串;

首先反转义这些字符,反转列表如下所示:

html编码为“&nbsp”,原字符为“空格”;

html编码为“&amp”,原字符为“&”;

html编码为“&lt”,原字符为“

html编码为“&gt”,原字符为“>”;

2.2、Html的部分标签包含和数据无关的大量的其他内容,在进行数据抽取的时候预

先过滤掉这些和数据无关的标签;

删掉的标签为“script”,标签的含义为“通常用于页面控制,与数据无关”;

删掉的标签为“style”,标签的含义为“影响页面布局,无关数据”;

删掉的标签为“br”,标签的含义为“空白符,等效于换行符”;

删掉的标签为“img”,标签的含义为“图片节点”;

删掉的标签为“input”,标签的含义为“输入框,例如用户名框,密码框”;

删掉的标签为“button”,标签的含义为“按钮”;

2.3、在html孤立的文字节点上下文加入自定义的标签,以区别现有的html标签;

html文本中的某些字段节点没有标签,添加自定义标签之后,可以通过自定义标签选出这些文字节点;

3、解析html文本

从预处理之后的页面选出4至5个进行分析;以所有html标签为分隔符,切分整篇html文本,寻找case1情况和case3情况的key节点,寻找节点遵循以下规则:节点包含关键词词根、不包含任何数字、除去首尾位置,其余位置不包含标点符号、长度在2-10个字符之间、包含该字面值的节点没有href属性;所有符合特征的字符串放入ListKeyword中;

使用Htmlcleaner解析器对html源码进行分析;

Xpath语言用在标记xml路径中,预处理之后的html文档和XML格式一致,此时使用xpath来定位html节点位置;

使用htmlcleaner对html文档进行解析,遍历每一个节点,并放入一个Map>map_xpath_reverse中;该map集合key为每个节点的xpath路径,value为在4至5个文档中,该xpath对应的节点字面值的集合;字面值在加入到集合前进行预处理操作:把所有的中文空格变为英文空格,把所有连续的空白符变成一个英文空格,去掉首尾的空格。

2.根据权利要求1所述的一种抽取网页半结构化数据的方法,其特征在于,所述的步骤3还包括以下内容:

3.1、遍历map_xpath_reverse,分别生成case1、case2、case3的备选集合,Map_xpath_reverse每个xpath对应ListvalueTxt集合;遍历valueTxt集合,如果有某个节点字面值包含在keyWord中,则把字面值放入新的Map>keyWordXpath集合,集合的key是节点字面值,集合的value是字面值所有可能出现的xpath位置;keyWordXpath实际上是map_xpath_reverse的子集的反转;

如果valueList没有被判定为key的节点,把该xpath放入另一个ListdiffXpath,作为case2的备选集合;现在分析diff_xpath和keyWordXpath,尝试为每个字面值生成对应的模式。

3.2、分析case1,case2,case3情况

3.2.1、case2情况分析

首先处理case2情况的集合diff_xpath;

case2情况的一个特殊情况是xpath对应的字面值节点都完全相同;

case2的这种特殊情况key与value具有明显的分隔符,常用的分隔符有中文冒号“:”,中文空格“”两种;以这两种字符切分字符串,若能得到两个字符串,且有一个字符串符合key的判定规则,则为key生成模式;

若xpath对应的字面值集合不同,则

①对所有的字面值进行分析,取出最长的公共子串,若没有公共子串则不进行处理;

②若最长的公共子串可以判定为需要的key,则认定找到一个关键词的模式;

③xpath对应的字面值均去掉取出的最长公共子串,之后重新从①开始;

3.2.2、case1情况分析

case1情况处理的对象是关键词所在的父节点,case1解决的问题是判定key节点和value节点的顺序关系,

判断方式:

①如果第一个子元素为keyWord中包含的元素,则为key-value模式;

②如果最后一个子元素为keyWord中包含的元素,则为value-key模式;

某些网页的case1情况可能存在嵌套情况,即case1之间互相嵌套,或case1、case2互相嵌套;

嵌套情况下针对每一个key生成的模式以key1为开头,以key2为结尾;

3.2.3、case3情况分析

case3处理的对象是关键词的父父节点longNode“即最外层的div”和case1一样,首先要先判断key-value的位置关系;判断方法:

遍历longNode的子元素,如果第一层均为key则为key-value模式,如果最后一层为key,则为value-key模式;

随后判断keys层为longNode的第几层节点,如果keys位于第i层,在key-value模式下,values层为longNode的i+1层,value-key模式下,values为longNode的i-1层;

最后判断sKey为keys层的第几个元素,结果返回values层的对应位置的xpath;case3情况的模式不是正则表达式的形式,仅是给出value的xpath。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值