`
henry2009
  • 浏览: 93816 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

【转】从HTML文件中抽取正文的简单方案

    博客分类:
  • java
阅读更多

原文转载自http://blog.csdn.net/lanphaday/archive/2007/08/13/1741185.aspx

根据上面所说,我写了一个页面降噪的测试类,确实有效,不过对于不同网页,可能结果有偏差,特别网页文字比较少的,例如图片于文字混合的主题正文页面,等等。

package com.test.net;

import java.io.BufferedReader;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;

/**
 *
 * @author LiuZiHeng
 * @version
 * @date 2010-8-25
 */
public class GetMainContent {

	private PriorityQueue<IndexPersent> priorityQueue = new PriorityQueue<IndexPersent>(1000, new Comparator<IndexPersent>() {
		public int compare(IndexPersent o1, IndexPersent o2) {
			if(o1.persent > o2.persent) {
				return -1;
			}
			
			if(o1.persent < o2.persent) {
				return 1;
			}
			return 0;
		}
	});
	
	public void run() {
		try {
			URL url = new URL("http://view.news.qq.com/a/20100824/000039.htm");
			URLConnection connection = url.openConnection();
			connection.connect();
			InputStream in = connection.getInputStream();
			
			BufferedReader reader = new BufferedReader(new InputStreamReader(in, "GBK"));
			FileOutputStream writer = new FileOutputStream("txt/test1.html", true);
			String line = null;
			StringBuffer sb = new StringBuffer();
			List<String> contentlist = new ArrayList<String>();
			
			//获取正文内容
			while((line = reader.readLine()) != null) {
				writer.write(line.getBytes("GBK"));
				writer.write("\r\n".getBytes("GBK"));
				sb.append(line);//记录html页面内容
				contentlist.add(line);//记录每一行html页面内容
			}
			reader.close();
			writer.close();
			
			System.out.println("=============================================");
			double allens = sb.toString().getBytes("GBK").length;
			
			for(int i = 0; i < contentlist.size(); i++) {
				String linestr = contentlist.get(i);
				int linelen = linestr.getBytes("GBK").length;
				double persent = (double)linelen / allens;//计算每一行内容,在全文内容中字节数的百分比
				
				IndexPersent indexPersent = new IndexPersent();
				indexPersent.setIndex(i);
				indexPersent.setPersent(persent);
				
				this.priorityQueue.add(indexPersent);
			}
			
			//只取头五位的内容部分
			int maxsize = 0;
			while(!priorityQueue.isEmpty()) {
				IndexPersent indexPersent = priorityQueue.poll();
				System.out.println(indexPersent.getIndex() + ":" + indexPersent.getPersent());
				System.out.println(contentlist.get(indexPersent.getIndex()));
				maxsize++;
				if(maxsize >= 6) {
					break;
				}
			}
			
		} catch (MalformedURLException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		new GetMainContent().run();
	}
	
	private static class IndexPersent {
		int index;
		double persent;
		
		int getIndex() {
			return index;
		}
		
		void setIndex(int index) {
			this.index = index;
		}
		
		double getPersent() {
			return persent;
		}
		
		void setPersent(double persent) {
			this.persent = persent;
		}
		
		
	}
}
 
分享到:
评论
2 楼 henry2009 2012-01-18  
太平洋门户网 写道
能不能提供源文件下载 谢谢

你是太平洋哪位?
1 楼 太平洋门户网 2010-12-08  
能不能提供源文件下载 谢谢

相关推荐

    从HTML文件中抽取正文的简单方案 试验结果

    这篇名为“从HTML文件中抽取正文的简单方案 试验结果”的文章可能探讨了如何有效地从HTML文档中分离出核心的正文部分。 首先,提取HTML正文的一种常见方法是利用HTML标签的语义特性。例如,`&lt;article&gt;`、`&lt;main&gt;`、...

    从HTML文件中抽取正文的简单方案.pdf

    ### 从HTML文件中抽取正文的简单方案 #### 背景介绍 随着互联网的快速发展,HTML文件成为了信息传递的主要载体之一。然而,在这些文件中,真正的内容往往被各种无关的元素如广告、布局表格、格式标记等所包围。为了...

    unity抽取html信息demo

    "unity抽取html信息demo"就是这样一个示例项目,它演示了如何在Unity中处理HTML数据,虽然可能不是全自动化的解决方案,但它提供了从静态HTML页面中提取关键信息的基础方法。 Unity本身并不直接支持HTML解析,但...

    .NET平台上的文件抽取框架toxy.zip

    toxy是.NET平台上的文件抽取框架,主要解决各种格式的内容抽取问题,比如pdf, doc, docx, xls, xlsx等,尽管听上去支持了很多格式,但它的使用却是极其方便的,因为Toxy把复杂的抽取流程透明化,Toxy的用户根本不用...

    Kettle API(HTML格式)

    例如,"CSV输入"步骤用于从CSV文件中读取数据,"Java脚本"步骤则允许用户编写自定义的JavaScript代码进行数据处理。 2. **Job(作业)**:作业是Kettle中的一系列步骤的逻辑组合,它们按照特定的顺序和条件执行。...

    dotnet-NET平台下一个高效的从Html中提取正文的工具

    总之,“dotnet-NET平台下一个高效的从Html中提取正文的工具”是一个高性能、高准确度的解决方案,它结合了文本密度算法和.NET技术,为处理HTML正文提取问题提供了强大的支持。开发者可以通过深入研究其代码和使用...

    基于HTMLParser的Web信息抽取系统的设计与实现

    基于HTMLParser的Web信息抽取系统的设计与实现,是一项旨在从网页中自动提取特定信息的技术方案。随着互联网信息的爆炸性增长,如何从海量数据中快速定位到有价值的信息成为了一个亟待解决的问题。传统的HTML页面...

    html5手机摇一摇抽取幸运号码代码

    在这个名为"html5手机摇一摇抽取幸运号码代码"的项目中,我们将探讨如何使用HTML5的DeviceMotion事件和JavaScript来创建一个摇一摇抽奖应用。 首先,我们需要了解HTML5的DeviceMotion事件。这个事件允许开发者获取...

    Java抽取Word及PDF编程

    以下是一个简单的Java程序示例,演示了如何使用Jacob从Word文档中提取文本: ```java import java.io.File; import com.jacob.com.*; import com.jacob.activeX.*; public class FileExtracter { public static ...

    PDF转word,ppt,html,txt

    转换过程中,软件会尽可能保留原始PDF的样式和结构,生成的HTML文件可以在各种浏览器中浏览,且适应不同屏幕尺寸。 TXT格式则适合那些只需要文本内容,不关心格式的场景。例如,提取文本数据进行分析或者导入其他...

    信息抽取类StringParser说明文档

    在信息技术领域,信息抽取是一项关键的技术,它涉及从大量非结构化的数据中提取有用的信息。StringParser是专为此目的设计的一个类,它提供了强大的字符串处理和HTML解析功能,广泛应用于WEB信息抽取场景。本文将...

    html到xml资源转换研究

    本文旨在探讨从HTML到XML的转换技术,并介绍一种基于Java的实现方案。 #### 二、HTML与XML的比较 HTML和XML虽然都属于标记语言,但它们之间存在显著差异: 1. **标记的目的**:HTML主要用于定义网页的结构和外观...

    cmt.rar_Cmt.rar_extract comments_抽取

    标题中的“cmt.rar_Cmt.rar_extract comments_抽取”表明这是一个关于从网页中提取文本评论的项目,可能是一个编程或数据分析任务。这个压缩包包含了必要的源代码和可能的数据集,帮助用户实现评论的抓取和处理。从...

    网络爬虫+csv文件处理

    在整个过程中,Python的requests库提供了方便的HTTP通信功能,正则表达式帮助我们高效地从HTML中抽取数据,而csv模块则让我们能够轻松地管理和存储这些数据。这三者结合,构成了一个完整的网络爬虫解决方案。

    6种格式转换成TXT格式(工具包)

    在IT行业中,文件格式转换是一项常见的任务,尤其在文本处理和数据迁移时。"6种格式转换成TXT格式(工具包)"是一个集合了多种文件格式转换功能的资源,旨在帮助用户将不同类型的文件转化为普遍易读的TXT文本格式。这...

    Java抽取Word和PDF格式文件的四种武器.doc

    在Java开发中,处理Word和PDF格式的文件是一项常见的任务,尤其在数据提取、文档转换或信息整合等场景。本文将介绍四种主要的Java库,它们可以帮助开发者有效地抽取Word和PDF文档的内容。 首先,我们来看JACOB...

    本地文件邮箱地址提取工具

    总的来说,“本地文件邮箱地址提取工具”是一个高效且自定义程度高的解决方案,它能够帮助用户快速、准确地从TXT文件中抽取邮箱地址,适用于市场营销、数据分析、客户关系管理等多个场景。通过结合正则表达式的强大...

    vibrantjs图片中抽取主色是AndroidPalette的一个JS移植

    `Vibrant.js` 是一个JavaScript库,它为Web开发者提供了一种方便的方式来从图像中提取主要的颜色,灵感来源于Android系统的`Palette` API。这个库的主要目的是帮助开发者在网页设计中实现与图像主题相符的颜色方案,...

    PowerGrep文本批量抽取工具

    总而言之,【PowerGrep文本批量抽取工具】是一款全面的文本处理解决方案,无论是研究人员处理语料库,还是开发人员进行数据清理,或者是企业进行信息管理,它都能提供强大而灵活的支持。其易用的界面、高效的性能...

Global site tag (gtag.js) - Google Analytics