Jsoup学习笔记5:Jsoup 解析SAZ文件中的htm文档源码实例

原创 2015年07月10日 14:37:41

       上一篇Jsoup学习笔记的小例子实现的功能是:解析saz格式文件中的htm文档,提取其中table标签内的数据,将解析到的数据写入txt文件中。本节做了一些改进,实现把提取的数据按照一定格式写入csv文档中,本来想把解析前的_index.htm文档附录一下供参考的,但不知道怎么传尴尬,如想验证本实例的话可以自己用Fiddler 2抓取网络操作生成一个saz文件,然后解压一下里面就有一个_index.htm文档。

示例如下 :

package com.daxiang.myjsoup;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;

/**
 * @Author:daxiang
 * @Date:2015-7-9
 * @Email:chenjinpeng0326@163.com
 * @Version:Version1.0
 * @CopyRight:daxiang
 * @Description: 解析SAZ格式文件中的htm文档,提取其中table标签内的数据,将解析到的数据写入TXT或者CSV文件中
 */
public class MyJsoupTest {

	public static void main(String args[]) throws IOException {

		// 导入htm文档
		File input = new File("C:\\myjsoup\\_index.htm");
		Document doc = Jsoup.parse(input, "UTF-8");

		// 提取表头信息
		Elements heads = doc.getElementsByTag("table").select("thead");
		FileWriter fw = new FileWriter("C:\\myjsoup\\1.csv", true);
		for (int m = 0; m < heads.size(); m++) {
			Elements head = heads.get(m).select("th");
			for (int n = 0; n < head.size(); n++) {
				// 经过观察,该htm文档table标签内共有23列数据,因为只需要第2至12列的数据,所以其他列排除掉不予提取
				if (n == 0) {
					continue;
				} else if (n < 22) {
					// text()方法和toString()方法的效果不同
					// String h = head.get(n).toString() + "\r\n";
					String h = head.get(n).text() + ",";
					fw.write(h);
					System.out.print(h);
				} else if (n == 22) {
					String h = head.get(n).text() + "\r\n";
					fw.write(h);
					System.out.print(h);
				} else {
					break;
				}
			}
		}

		// 提取表格信息
		Elements trs = doc.getElementsByTag("table").select("tr");
		for (int i = 0; i < trs.size(); i++) {
			Elements tds = trs.get(i).select("td");
			for (int j = 0; j < tds.size(); j++) {
				// 把空格无内容的部分去除掉
				// if(!"".equals(tds.get(j).text())){
				// String str = tds.get(j).text() + "\r\n";
				// System.out.print(str);
				// fw.write(str);
				// }
				if (j == 0) {
					continue;
				} else if (j < 22) {
					//加双引号的作用很大,有些数据是包含逗号的,不处理一下,本来在一个表格里的数据
					//会因为逗号的存在分开到好几列表格中
					String str1 = "\"" + tds.get(j).text() + "\"";
					String str2 = str1 + ",";
					//System.out.print(str2);
					fw.write(str2);
				} else if (j == 22) {
					String str3 = tds.get(j).text() + "\r\n";
					//System.out.print(str3);
					fw.write(str3);
				} else {
					break;
				}
			}
		}
		fw.flush();
		fw.close();

	}
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Jsoup学习笔记9:Jsoup 解析saz文件,读取其中的htm文件到字符串,提取字符串中的数据写入csv文件中

本篇笔记将上篇笔记的操作做些改进,不再把saz文件中的htm文件解析出来,而是不解压直接读取其中的数据成字符串,基本思路如下: 1、自定义一个从文本文件读取内容到字符串的类:解析saz文件中的h...
  • cjp0326
  • cjp0326
  • 2015年08月04日 09:38
  • 652

Jsoup学习笔记8:Jsoup 解析指定目录中的saz文件,生成一个名字相同的htm文件,将解析结果写入csv文件中

本篇笔记和前面的Jsoup学习笔记有连贯性,有些小细节不明白的可以查看前面几篇笔记,要实现的功能是: 1、解析指定目录中的saz文件,生成一个名字相同的htm文件  2、解析生成的htm文件,提取其中...
  • cjp0326
  • cjp0326
  • 2015年07月23日 16:30
  • 698

Jsoup 解析Html源码实例

最近在做数据挖掘的过程中需要对html的源码进行解析,用到了Jsoup这个解析工具,下面写个基本实例来展现它的用法。 需要用到jar包:jsoup-1.7.2.jar,可以到jsoup的官网下载...

Jsoup学习笔记6之File类操作文件:获取指定目录下面,指定扩展名(.saz)的文件,并在对应的文件夹下生成同名的csv文件。

虽然这篇笔记涉及的主要是文件的操作,但是是在做的利用Jsoup解析文档小任务的一部分,所以也放在一起,借鉴了帖子上的源码,做了一些改动,下一篇笔记是基于本篇的进一步改进! 实例如下: package ...
  • cjp0326
  • cjp0326
  • 2015年07月22日 15:05
  • 668

Jsoup学习笔记10:Saz2Csv解析器

经过了一系列的学习和摸索,Jsoup学习笔记即将告一段落,第11篇学习笔记将会把本篇实现的功能界面化,并做成一个可直接执行的exe文件。后续的项目如果需要更深入的学习Jsoup,还会继续更新。    ...
  • cjp0326
  • cjp0326
  • 2015年08月04日 10:40
  • 433

Jsoup学习——Saz2Csv解析器

  • 2015年08月05日 13:56
  • 22.85MB
  • 下载

JSOUP 解析XML文件

Jsoup 可以用于解析、操作HTML,同样也可以用来解析XML,这里只简单介绍一下,更多功能可以查看源码APIpackage com.hk.internethospital.justtest;imp...
  • lbxoqy
  • lbxoqy
  • 2017年04月13日 22:48
  • 313

Jsoup 解析JSP

  • 2011年11月16日 05:09
  • 301KB
  • 下载

Jsoup 解析 HTML

Jsoup 文档 方法 要取得一个属性的值,可以使用Node.attr(String key) 方法对于一个元素中的文本,可以使用Element.text()方法对于要取得元素或属性中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jsoup学习笔记5:Jsoup 解析SAZ文件中的htm文档源码实例
举报原因:
原因补充:

(最多只允许输入30个字)