在jsoup中的td标记内提取href值

时间:2012-06-15 06:52:58

标签: java html-parsing jsoup

我有

<table class="table" >
<tr>   
 <td><a href="url">text1</a></td>    
<td>text2</td> 

 </tr>
  <tr>
    <td><a href="url2">text</a></td> 
   <td>text</td> 

</tr>

我想提取所有行的网址和文字 我用

Document doc = Jsoup.connect(url).get();
for (Element table : doc.select("table.table")) {
                for (Element row : table.select("tr")) {
                     Elements tds = row.select("td");
                           String text1=tds.get(0).text();
                           String url= row.attr("href");
                         System.out.println(text1+ "," + url);
                }
}

我得到text1值,但url为null。

如何从td标签中获取网址?

2 个答案:

答案 0 :(得分:10)

您的行变量不是a标记,因此其上没有属性href

试试这个:

Element table = doc.select("table.table");
Elements links = table.getElementsByTag("a");
for (Element link: links) {
    String url = link.attr("href");
    String text = link.text();
    System.out.println(text + ", " + url);
}

这几乎是从JSoup documentation

中提取的

答案 1 :(得分:0)

你(也许还有其他人)可以试试这个:

  Document doc = Jsoup.connect(url).get();
        for (Element table : doc.select("table.table")) {
            for (Element row : table.select("tr")) {
                for (Element tds : row.select("td")) {
                    Elements links = tds.select("a[href]");
                    for (Element link : links) {
                        System.out.println("link : " + link.attr("href"));
                        System.out.println("text : " + link.text());
                    }
                }
            }
        }