xpath能获取div下的所有tr中的td内容么
<div id="demo1">
<table class="table" width="244" border="0" style="font-family:'宋体'; font-size:12px;">
<tbody>
<tr>
<td>岭北</td>
<td>29</td>
<td>
<img width="14" height="14" src="images/face_1.gif">
</td>
<td class="t2" style="color:00e400;">优</td>
<td>—</td>
</tr>
<tr>
<td>松北商大</td>
<td>37</td>
<td>
<img width="14" height="14" src="images/face_1.gif">
</td>
<td class="t2" style="color:00e400;">优</td>
<td>—</td>
</tr>
</table>
</div>
我要获取上面的 (岭北 29 优) 和 (松北商大 37 优)应该怎么用xpath获取 tr下的所有td文本
page.putField("site", page.getHtml().xpath("//div[@id='demo1']/table/tbody//tr//td"));只能获取第一个tr中的第一个td文本
要写在java类中,在后台执行,不要前台页面
page.putField("site", page.getHtml().css("div.demo2").links().all());
这种方法应该怎么用
请写详细代码,谢谢 展开
1、首先自己编写了一个网页。
2、如图,在浏览器中打开网页。然后//div,就可以找到页面中的所有div了,因为//表示的是任意目录下查找。如图,页面有两个div,所以可以找到两个。
3、还可以用类来排除多余的div,比如要查找类为a的div,可以在div后面用[@class="类名"]来指定,这样没有类名a的div就会被过滤掉,当然,还可以用id,把class改为[@id="id名"]即可。
4、那么如果想找div下面的a标签怎么办,同样,还是用//,这样div下面的非a标签就会被跳过,直接去找a标签。
5、如果要获取a标签的href,那么可以获取到a标签后用/@href即可获得。
6、如果是获取文本的话,可以用text()这个方法,就会得到a标签里面的内容。
7、如图,斜杠/表示的是获取子元素,比如div下面有两个子元素p,那么//div[2]/p获取的就是第二个div的子元素p。这样简单的xpath就分析完了。
首先通过xpath的all()返回一个list<String>的html字符串集合
List<String> trs = page.getHtml().xpath( "//tr" ).all();
然后将这个集合循环迭代出来
for( String tr : trs ) {
//下边两行是将html中的tr和td替换成ul和li.
//因为在我自己写的代码中将tr这个字符串转成html对象的时候,tr和td标签都不见了.
tr = tr.replaceAll( "tr", "ul" );
tr = tr.replaceAll( "td", "li" );
Html html = new Html( tr );
//TODO 剩下的内容就可以从这个html对象中获取了
//这个就是你想要的"岭北"和"松北商大"
addr = html.xpath( "//ul/li[1]/text()" ).toString();
}
//*[@id="demo1"]//td/text()