技术特征:
1.一种抽取网页半结构化数据的方法,其特征在于,包括以下内容:
下面给出描述中所需的一些定义:
半结构化数据在网页中存在的形式是key-value对应的形式,通常存在3种对应的情况:
Case1情况:key节点,value节点同在一个父节点下

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

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编码为“ ”,原字符为“空格”;
html编码为“&”,原字符为“&”;
html编码为“<”,原字符为“
html编码为“>”,原字符为“>”;
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。
1457

被折叠的 条评论
为什么被折叠?



