【问题标题】:How to extract href detail from links using Jsoup?如何使用 Jsoup 从链接中提取 href 详细信息?
【发布时间】:2015-01-10 08:44:41
【问题描述】:

我有一个带有这个表单的 html:

 <table> 
               <tbody>
                <tr> 
                 <td class="t1"><a href="/click/site1" target="_blank" rel="nofollow"><img class="png" src="" alt="site1"></a></td> 
                 <td class="t2 up"><a href="/click/site1" target="_blank" rel="nofollow">INFORMATION</a></td> 
                 <td class="t2 down"><a href="/click/site1" target="_blank" rel="nofollow">INFORMATION</a></td> 
                 <td class="t2 up mark"><a href="/click/site1" target="_blank" rel="nofollow">INFORMATION</a></td> 
                </tr>
                <tr> 
                 <td class="t1"><a href="/click/site2" target="_blank" rel="nofollow"><img class="png" src="" alt="site2"></a></td> 
                 <td class="t2 down"><a href="/click/site2" target="_blank" rel="nofollow">INFORMATION</a></td> 
                 <td class="t2 stable"><a href="/click/site2" target="_blank" rel="nofollow">INFORMATION</a></td> 
                 <td class="t2 up"><a href="/click/site2" target="_blank" rel="nofollow">INFORMATION</a></td> 
                </tr>
                 .
                 . 
                 .
              </tbody> 
 </table>

我想提取或提取 href (/click/site1) 的值或 alt (site1) 的值。 我怎样才能使用 Jsoup 做到这一点? 谢谢

编辑: 这是我写的代码:

for(Element table : doc.select("table"))
        {

            for(Element row : table.select("tr"))
            {
                System.out.print(table.attr("href").toString());
                Elements column = row.select("td");
                {
                System.out.println(column.text());
                }
            }
            System.out.println();
        }

但这行System.out.print(table.attr("href").toString());不打印任何东西

【问题讨论】:

    标签: java html parsing jsoup


    【解决方案1】:

    这个过程在 jsoup 食谱中有描述。

    http://jsoup.org/cookbook/extracting-data/working-with-urls

    Document doc = Jsoup.connect("http://jsoup.org").get();
    
    Element link = doc.select("a").first();
    String relHref = link.attr("href"); // == "/"
    String absHref = link.attr("abs:href"); // "http://jsoup.org/"
    

    在您的问题中,您尝试从表中获取属性 href 但该表没有 href 属性。要么搜索所有标签,要么选择行内的 td,然后选择其中的链接。

    是否添加了一些代码更改了您的示例并添加了一些代码以仅编写链接。

    for(Element table : doc.select("table")) {
        for(Element row : table.select("tr")) {
            Elements column = row.select("td");
            Elements atag = column.get(0).select("a");
            System.out.print(atag.get(0).attr("href").toString());
            System.out.print(" ");
            System.out.println(column.text());
        }
        System.out.println();
    }
    
    for(Element link : doc.select("a")) {
        System.out.println(link.attr("href")); // == "/"
    }
    

    【讨论】:

    • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。
    • 感谢您的建议
    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多