因为最近工作需要解析Fiddler 2 抓取的SAZ格式数据,用WinRar解压SAZ文件后发现所需要的大部分数据都在一个名为_index.htm的文档中,结合前面的学习笔记,自己写了一个Jsoup解析htm文档的小例子,具体功能是:解析SAZ格式文件中的htm文档,提取其中table标签内的数据,将解析到的数据写入txt文件中,继续学习吧,接下来要实现把提取的数据按照一定格式写入CSV文档中!
示例如下 :
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-7
* @Email:chenjinpeng0326@163.com
* @Version:Version1.0
* @CopyRight:daxiang
* @Description: 解析SAZ格式文件中的htm文档,提取其中table标签内的数据,将解析到的数据写入TXT文件中
*/
public class MyJsoupTest1 {
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 hd = new FileWriter("C:\\myjsoup\\1.txt");
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 <= 11) {
//text()方法和toString()方法的效果不同
//String h = head.get(n).toString() + "\r\n";
String h = head.get(n).text() + "\r\n";
hd.write(h);
System.out.print(h);
} else {
break;
}
}
}
hd.flush();
hd.close();
// 提取表格信息
Elements trs = doc.getElementsByTag("table").select("tr");
FileWriter fw = new FileWriter("C:\\myjsoup\\2.txt");
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 <= 11) {
String str = tds.get(j).text() + "\r\n";
System.out.print(str);
fw.write(str);
} else {
break;
}
}
}
fw.flush();
fw.close();
}
}