xpath能获取div下的所有tr中的td内容么

2025-01-02 23:30:26
推荐回答(3个)
回答1:

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就分析完了。

回答2:

  1. 首先通过xpath的all()返回一个list的html字符串集合

    List trs = page.getHtml().xpath( "//tr" ).all();

  2. 然后将这个集合循环迭代出来


    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();

    }

回答3:

使用xpath
//*[@id="demo1"]//td/text()