赞
踩
不知从什么时候,自己居然走上了玩Java的道路。本以为做葡萄城杯是我最后一次用Java来写程序,现在看来只能说世事无常,我们永远不知道明天会发生什么,就像我无论如何也没想到一心想利用暑假时间好好看Linux C,最终却玩上Java一样。是的我没有写错,后者比起前者更让我感到吃惊。
言归正传,项目需要,需要对爬虫抓取下来的网页进行去噪。
广义上的Web去噪大致分为三类:一是去除重复的网页(如:镜像网站、复制文章等);二是去除网页中某些为提高在搜索引擎中的排名而故意制造的反向、重复链接;三是去除网页中与网页正文不相关的内容(如:广告图片、链接,网站模板信息以及版权信息等)。
项目中目前我负责对第三种情况的处理,因此也仅对第三种情况做了一些大致的了解与研究。目前针对第三种情况,主流的方法大致有以下几种:基于DOM树的行文本Hash去噪,基于DOM树的风格树去噪,基于LCS(最长相似子串)的最大相似度匹配去噪以及机器学习等方法。目前看来第一种方法较容易实现,于是便从该方法开始入手,做了一个小的实现,效果还比较不错。下面简要介绍一下这种去噪方法的实现步骤。
整个方法的核心为DOM树与Hash值,通过生成网页的DOM树,对DOM树稍做处理,依次遍历所有结点,对每一结点(行文本)计算得其哈希值,当某一行文本对应的哈希值出现次数过多,大于指定的阈值时,则认定该结点(行文本)为噪声,可将其去除。
整个过程可以分为大致两个阶段,第一阶段为生成DOM树以及对DOM树的处理,第二阶段为哈希值的计算以及噪声的判定与去除。
第一阶段:
首先, 我们将抓取下来的一个完整的HTML代码进行处理。处理包括统一字符编码、替换诸如<strong>、<hX>、<font>等无用的干扰标签为空串,去除meta,link,img,li,a,span,style,script等无用标签,清除网页源码中的注释信息等工作。
在移除标签时, 用到了Jsoup这个三方库
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。
jsoup 的主要功能如下:
1. 从一个 URL,文件或字符串中解析 HTML;
2. 使用 DOM 或 CSS 选择器来查找、取出数据;
3. 可操作 HTML 元素、属性、文本;
-
-
-
-
-
-
-
-
-
-
- public
-
-
- static
-
-
- String remove_tag
-
-
- (
-
-
- String text
-
-
- )
-
-
- {
-
-
-
-
-
-
-
-
-
-
- Document doc
-
-
- = Jsoup.
-
-
- parse
-
-
- (text
-
-
- )
-
-
- ;
-
-
-
-
-
-
-
-
-
- remove_comment
-
-
- (doc
-
-
- )
-
-
- ;
-
-
-
-
-
-
-
-
-
- System.
-
-
- out.
-
-
- println
-
-
- (doc.
-
-
- toString
-
-
- (
-
-
- )
-
-
- )
-
-
- ;
-
-
-
-
-
-
-
-
-
- //无用标签列表
-
-
-
-
-
-
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。