java读取html表格_atitit. java jsoup html table的读取解析 总结

atitit. java jsoup html table的读取解析 总结

html table的读取

1. 两个大的parser ,,,jsoup 跟个   htmlparser

2. 资料比较

jsoup  百度为您找到相关结果约321,000个

htmlparser 百度为您找到相关结果约113,000个

3. jsoup越佳..

运用 jsoup对HTML文档进行解析和操作(比HTMLParser好)

Java 程序在解析 HTML 文档时,相信大家都接触过 htmlparser 这个开源项目,我曾经在 IBM DW 上发表过两篇关于 htmlparser 的文章,分别是:从 HTML 中攫取你所需的信息和?扩展 HTMLParser 对自定义标签的处理能力。但现在我已经不再使用 htmlparser 了,原因是 htmlparser 很少更新,但最重要的是有了 jsoup 。

作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@qq.com

转载请注明来源:http://blog.csdn.net/attilax

4. 解析并提取 HTML元素的模式(选择器 and  DOM 方式 )

这部分涉及一个 HTML解析器最基本的功能,但jsoup使用一种有别于其他开源项目的方式――选择器,我们将在最后一部分详细介绍jsoup选择器,本节中你将看到jsoup是如何用最简单的代码实现。

不过 jsoup也提供了传统的DOM方式的元素解析,看看下面的代码

5. html修改

修改数据

在解析文档的同时,我们可能会需要对文档中的某些元素进行修改,例如我们可以为文档中的所有图片增加可点击链接、修改链接地址或者是修改文本等。

下面是一些简单的例子:

清单 4.

doc.select("div.comments a").attr("rel", "nofollow"); // 为所有链接增加 rel=nofollow 属性 doc.select("div.comments a").addClass("mylinkclass"); // 为所有链接增加 class=mylinkclass 属性 doc.select("img").removeAttr("onclick"); // 删除所有图片的 onclick 属性 doc.select("input[type=text]").val(""); // 清空所有文本输入框中的文本

道理很简单,你只需要利用 jsoup的选择器找出元素,然后就可以通过以上的方法来进行修改,除了无法修改标签名外(可以删除后再插入新的元素),包括元素的属性和文本都可以修改。

修改完直接调用 Element(s)的html()方法就可以获取修改完的HTML文档。

6. 跟个htmlparse的比较

与 htmlparser项目不同的是,jsoup并没有为HTML元素定义一个对应的类,一般一个HTML元素的组成部分包括:节点名、属性和文本,jsoup提供简单的方法供你自己检索这些数据,这也是jsoup保持瘦身的原因。

而在元素检索方面,jsoup的选择器简直无所不能,

这是 jsoup真正让我折服的地方,jsoup使用跟jQuery一模一样的选择器对元素进行检索,以上的检索方法如果换成是其他的HTML解释器,至少都需要很多行代码,而jsoup只需要一行代码即可完成。

jsoup 的选择器还支持表达式功能,我们将在最后一节介绍这个超强的选择器。

7. jsoup的用处

7.1. html解析

7.2. html修改

7.3. HTML 文档清理

8. code--读取解析表格2Lisp

prj.wechatadm4prp

packagecom.attilax.html;

importorg.jsoup.Jsoup;

importorg.jsoup.nodes.Document;

importorg.jsoup.nodes.Element;

importorg.jsoup.select.Elements;

//import com.attilax.cc.Document;

importcom.attilax.io.pathx;

importcom.attilax.lang.core;

importcom.attilax.lang.json.JsonX;

importcom.attilax.util.AngularJsX;

@SuppressWarnings("all")

publicclassHtmlX {

publicstaticvoidmain(String[]args) {

Stringjsppath="applyInstall\\appinst_list.jsp";

jsppath="aa/bb";

jsppath=jsppath.replaceAll("/","\\\\");

System.out.println(jsppath);

Listli=getTitlesMap(jsppath,"tabid1","utf-8");

System.out.println(JsonX.toJsonStrO88(li));

}

/**

*

*@paramjsppath   %app%/path

*@paramtableId

*@paramhtmlEncode

*@return

*/

publicstaticList getTitlesMap(Stringjsppath, StringtableId,StringhtmlEncode) {

jsppath=pathx.delWebappPrefix(jsppath);

jsppath=jsppath.replaceAll("/","\\\\");

jsppath=pathx.webAppPath()+"\\"+jsppath;

Listli=newArrayList();

Fileinput=newFile(jsppath);

try{

Documentdoc= Jsoup.parse(input,htmlEncode,"http://example.com/");

Elementtab_elmt=doc.getElementById(tableId);

Elementstrs=tab_elmt.getElementsByTag("tr");

ElementtitleTr=trs.get(0);

ElementfldTr=trs.get(1);

Elementstds=titleTr.getElementsByTag("td");

if(tds.size()==0)

tds=titleTr.getElementsByTag("th");

Elementstds_fld=fldTr.getElementsByTag("td");

for(inti=0;i

{

Elementtd=tds.get(i);

Mapm=newHashMap();

m.put("title",td.text());

Stringfld1=tds_fld.get(i).text();

Stringfld=AngularJsX.getFld_sf(fld1);

m.put("fld",fld);

if(fld.length()>0)

li.add(m);

}

}catch(IOExceptione) {

thrownewRuntimeException(e);

}

returnli;

}

}

参考

运用 jsoup对HTML文档进行解析和操作(比HTMLParser好)_HTML_CSS_代码迷.htm

使用 jsoup对HTML文档进行解析和操作.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值