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

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

 

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

2. 资料比较 1node

3. jsoup越佳.. 1web

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

5. html修改 2app

6. 跟个htmlparse的比较 2jsp

7. jsoup的用处 3spa

7.1. html解析 3.net

7.2. html修改 3code

7.3. HTML 文档清理 3

8. code--读取解析表格2Lisp<Map> 3

 

 

 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<Map>

 

prj.wechatadm4prp

 

 

package com.attilax.html;

 

 import org.jsoup.Jsoup;

import org.jsoup.nodes.Document;

 import org.jsoup.nodes.Element;

import org.jsoup.select.Elements;

 

 

 

 

 

 

//import com.attilax.cc.Document;

import com.attilax.io.pathx;

import com.attilax.lang.core;

import com.attilax.lang.json.JsonX;

import com.attilax.util.AngularJsX;

@SuppressWarnings("all")

public class HtmlX {

public static void main(String[] args) {

Stringjsppath="applyInstall\\appinst_list.jsp";

jsppath="aa/bb";

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

System.out.println(jsppath);

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

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

}

 

/**

 * 

 * @param jsppath   %app%/path

 * @param tableId

 * @param htmlEncode

 * @return

 */

public static List<Map> getTitlesMap(String jsppath, String tableId,String htmlEncode) {

jsppath=pathx.delWebappPrefix(jsppath);

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

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

List li=new ArrayList();

File input = new File(jsppath);

try {

Document doc = Jsoup.parse(inputhtmlEncode"http://example.com/");

Element tab_elmt=doc.getElementById(tableId);

Elements   trs=   tab_elmt.getElementsByTag("tr");

Element titleTr=trs.get(0);

Element  fldTr=trs.get(1);

Elements tds=titleTr.getElementsByTag("td");

if(tds.size()==0)

tds=titleTr.getElementsByTag("th");

Elements tds_fld=fldTr.getElementsByTag("td");

for(int i=0;i<tds.size();i++)

{

Element td=tds.get(i);

 Map m=new HashMap();

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

 String fld1=tds_fld.get(i).text();

 String fld=AngularJsX.getFld_sf(fld1);

 m.put("fld"fld);

 if(fld.length()>0)

 li.add(m);

}

 

 

catch (IOException e) {

 

throw new RuntimeException(e);

}

return li;

}

 

}

 

参考

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

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

相关文章
相关标签/搜索