jsoup解析html的table中的内容

jsoup解析html的table中的内容,第1张

public void parse(){

String htmlStr = "<table id=kbtable >"

+ "<tr> "

+ "<td width=123>"

+ "<div id=12>这里是要获取的数据1</div>"

+ "<div id=13>这里是要获取的数据2</div>"

+ "</td>"

+ "<td width=123>"

+ "<div id=12>这里是要获取的数据3</div>"

+ "<div id=13>这里是要获取的数据4</div>"

+ "</td> "

+ "</tr>"

+ "</table>";

Document doc = Jsoupparse(htmlStr);

// 根据id获取table

Element table = docgetElementById("kbtable");

// 使用选择器选择该table内所有的<tr> <tr/>

Elements trs = tableselect("tr");

//遍历该表格内的所有的<tr> <tr/>

for (int i = 0; i < trssize(); ++i) {

// 获取一个tr

Element tr = trsget(i);

// 获取该行的所有td节点

Elements tds = trselect("td");

// 选择某一个td节点

for (int j = 0; j < tdssize(); ++j) {

Element td = tdsget(j);

// 获取td节点的所有div

Elements divs = tdselect("div");

// 选择一个div

for (int k = 0; k < divssize(); k++) {

Element div = divsget(k);

//获取文本信息

String text = divtext();

//输出到控制台

Systemoutprintln(text);

}

}

}

}

docselect("meta[name=description]"),get(0)attr("content")

大致是这么写的,你可以研究一下JSOUP的选择器,

chenying99/archive/2013/01/04/2844615,html" target="_blank">>

要取得一个属性的值,可以使用Nodeattr(String key) 方法

对于一个元素中的文本,可以使用Elementtext()方法

对于要取得元素或属性中的HTML内容,可以使用Elementhtml(),或 NodeouterHtml()方法。

使用Jsoup解析html中的指定数据,十分方便。Jsoup工具十分强大,十分好用。但网上似乎没有很好的例子,本文的目的即在于此。建议仔细阅读代码中的几个例子,Jsoup解析数据不外乎这几种类型。

第一步:将Jsoup JAR包导入项目

第二步:使用Jsoup API

1, 定位

通过div的属性值,定位到html的div(块),即所需要内容对应的块。

示例代码如下:

<div class="content">

2, 筛选数据

a, 通过标签头,在div中继续筛选数据。可能会找到很多的数据,这里会用到循环。见eg1。

//eg1:解析百度音乐 Document doc = Jsoupconnect(">

Document doc= Jsoupconnect("your_url")get(); //通过url获取html页面

Elements ListClass = docgetElementsByAttributeValue("class","your_class_name"); //通过class属性获取元素集合

for (Element element :ListClass) {

Elements divs = elementgetElementsByTag("div"); //获取div

for (Element div: divs) {

String divText = divtext()trim();

Systemoutprintln(divText);

}

}

jsoup可以解析出 js 的文件名,至于 js 文件里的内容,可以用程序下载能得到的,但这不是 jsoup 干的事。

参考实例如下:

Elements els = docselect("script");

for(Element el: els) {

//提取src信息

String src = elattr("src");

//得到js的地址了,就可以下载了。比如外部css样式表也可以类似的方式取出来

}

我们这款沙发是采用最高端的科技制造而成,d簧的d性抗压力都是最高标准。

而且海绵质量也特别过关,定制的时候都是高端产品,坐到沙发上的时候,d性很足,也不会她坐下去的时候舒适度真好,经过无数次实践验证过的,可以放心使用。

问题:大侠们我想问两个Android开发使用jsoup解析html的相关问题

回答:第一个问题帮你解决了;第二个问题很简单(但你用错了),但没有你的这个htm文件,没有修改测试

superonCreate(savedInstanceState);

TextView txt = new TextView(this);

InputStream input;

try {

input = getResources()getAssets()open("temp04_assets/txt01htm");

int buffersize = inputavailable();// 取得输入流的字节长度

byte buffer[] = new byte[buffersize];

inputread(buffer);// 将数据读入数组

inputclose();// 读取完毕后要关闭流。

String txthtml = EncodingUtilsgetString(buffer, "UTF-8");// 设置取得的数据编码,防止乱码

Document doc = Jsoupparse(txthtml);

Element infoTable = docgetElementsByAttributeValue("class",

"table002")first();

Elements tableLineInfos = infoTableselect("tr");

for (Element lineInfo : tableLineInfos) {

String lineInfoContent = lineInfoselect("td")last()text()

trim();

txtsetText(lineInfoContent);

setContentView(txt);

}

} catch (IOException err) {

errgetStackTrace();

}

这段html实际上是不符合规范的。在用jsoup解析时会出现问题。

我想到一个办法解决这个问题。

首先我想你应该是想得到 标题、馆藏复本的数目、可借复本的数目、朱印宏编著和长江出版社。

所以我们先把上面html里面的文字全部得到即:

java开发解析 馆藏复本:3 可借复本:0 朱印宏编著 长江出版社

然后我想在这段文字中 “馆藏复本:”、“可借复本:”、“编著” 这几个字应该是固定不变的。所以我们可以用正则表达式去对它进行解析,得到你想要的文字。

代码如下:

public class Test {

public static void main(String[] args) {

String html = "<div class=\"list_books\" id=\"list_books\"><td>java开发解析</td><p><span><strong>馆藏复本:</strong>3 <br /> <strong>可借复本:</strong>0 </span>朱印宏编著 <br /> 长江出版社</p> </div>";

Document doc = Jsoupparse(html);

String e = docselect("#list_books")text()replaceAll("[\\s]+", "");

//Systemoutprintln(e);

Pattern p = Patterncompile("^()馆藏复本:([\\d]+)可借复本:([\\d]+)()编著()$");

Matcher m = pmatcher(e);

if(mfind()){

for(int i=1;i<=mgroupCount();i++){

Systemoutprintln(mgroup(i));

}

}

}

}

如果如下:

java开发解析

3

0

朱印宏

长江出版社

以上就是关于jsoup解析html的table中的内容全部的内容,包括:jsoup解析html的table中的内容、利用Jsoup获取具体标签属性值、jsoup在怎么获取特定的子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9567718.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存