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 = Jsoup.parse(htmlStr)
// 根据id获取table
Element table = doc.getElementById("kbtable")
// 使用选择器选择该table内所有的<tr><tr/>
Elements trs = table.select("tr")
//遍历该表格内的所有的<tr><tr/>
for (int i = 0i <trs.size()++i) {
// 获取一个tr
Element tr = trs.get(i)
// 获取该行的所有td节点
Elements tds = tr.select("td")
// 选择某一个td节点
for (int j = 0j <tds.size()++j) {
Element td = tds.get(j)
// 获取td节点的所有div
Elements divs = td.select("div")
// 选择一个div
for (int k = 0k <divs.size()k++) {
Element div = divs.get(k)
//获取文本信息
String text = div.text()
//输出到控制台
System.out.println(text)
}
}
}
}
除了正则之外,还有一个方法就是XSL解析,
例如您的这个我可以使用此XSL文件解析。
<?xml version="1.0" encoding="utf-8" ?><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<Content>
<xsl:value-of select="//div[@class='skcx_B']"/>
</Content>
</xsl:template>
</xsl:stylesheet>
当然,您要排除唯一性,就是说class中的skcx_B只在这里有,如果其他地方有,可以使用这种方法获取
<xsl:value-of select="//div[@class='skcx_B'][1]"/>这个[1]是指<div class="skcx_B"></div>处在第几个位置,
记住:这个是从1开始的,并不是从0开始的。
嗯,差不多是这样的,因为网页在读取table数据的时候,要将table内的所有td tr tbody 这些内容数据下载完后才会显示出来,而DIV就不一样了,它是读一个就显示一个,效率当然高多了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)