
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在怎么获取特定的子节点等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)