网页内容提取原理

 

   现在网页内容提取的方法比较多,基于规则的,基于统计的,基于自然语言处理的,不过在看过一些paper之后大致觉得下面的思路还是比较可行的,而且准确率比较高:
:因为经验可以得知一般的content都放在table里面,所以找content的过程就转化为寻找候选table的过程.
1) 找到HTML 文档树中包含的所有的table 结点。
2) 对1) 中找到的table 结点,我们按照下面的方法进行进一步的处理。对每一个table 结点,去掉其中的HTML 标记,得到不含任何HTML 标记的字符串。如果得到的字符串中所含有的中文字符的数量大于我们预先设定的阈值P ,我们就把该table 结点作为候选。这样,我们可以去掉一些不包含数据,只为了调整显示格式的table 结点。
3) 对每个table 结点,按照由它得到的字符串的长度进行降序排序。这里需要说明的一点是:因为大多数网站中,每一个新闻网页都含有很多的相关链接的信息,为了排除这种信息对正文提取的干扰,我们在去掉HTML 标记时,把超链中包含的字符也都去掉了。还有就是我们在统计字符串的长度时,我们统计的是字符串中文字符的个数。去掉HTML 标记时,我们用的是顺序遍历的方法。因为〈script〉〈/ script〉〈, form〉〈/ form〉,〈style〉〈/ style〉这些标记中不会含有我们的所需要的内容,还会对后面的处理有负面影响,所以我们去掉了这些标记之间所包含的全部内容。
4) 经过上面的处理,排在前面的table 结点基本上就包含了我们需要的正文信息。但由于table 是可以嵌套的,所以有可能排在最前面的table 结点除了正文,还包含了其他一些信息,如版权信息。所以,为了更加准确的提取正文信息,我们还进行了下一步的处理。除了排在最前面的table 结点,对队列中剩下的每一个table 结点,依次考察它是不是它前面的table 的后代结点,如果找到一个这样的结点,它不是它前面任意一个结点的后代结点或者它是前面某结点的后代结点并且它所含的信息量在该结点所含的信息量中占有的比率大于T 。这个结点就是我们的最终选择。

经验分析:p=60,T=0.165
posted @ 2012-08-31 00:05  永哥  阅读(240)  评论(0)    收藏  举报