【问题标题】:Jsoup get href within a classJsoup在一个类中获取href
【发布时间】:2011-10-13 08:29:17
【问题描述】:

我有这个需要解析的 html 代码 <a class="sushi-restaurant" href="/greatSushi">Best Sushi in town</a>

我知道有一个 jsoup 的示例,您可以获取页面中的所有链接,例如

Elements links = doc.select("a[href]");
for (Element link : links) {
print(" * a: <%s>  (%s)", link.attr("abs:href"),
trim(link.text(), 35));
}

但我需要一段代码,可以返回该特定类的 href。

谢谢大家

【问题讨论】:

  • Best Sushi 抱歉,此代码已转换为最佳寿司。对不起

标签: java class href jsoup


【解决方案1】:
Elements links = doc.select("a");
for (Element link : links) {
String attribute=link.attr("class");
if(attribute.equalsIgnoreCase("sushi-place")){
print   link.href//You probably need this
   }
}

【讨论】:

    【解决方案2】:

    您可以按类别选择元素。此示例查找类为 sushi-restaurant 的元素,然后获取第一个结果的绝对 URL。

    确保在解析 HTML 时指定基本 URL(从中获取文档的位置)以允许 jsoup 确定链接的绝对 URL 是什么。

    public static void main(String[] args) {
        String html = "<a class=\"sushi-restaurant\" href=\"/greatSushi\">Best Sushi in town</a>";
        Document doc = Jsoup.parse(html, "http://example.com/");
        // find all <a class="sushi-restaurant">...
        Elements links = doc.select("a.sushi-restaurant");
        Element link = links.first();
        // 'abs:' makes "/greatsushi" = "http://example.com/greatsushi":
        String url = link.attr("abs:href");
        System.out.println("url = " + url);
    }
    

    短版:

    String url = doc.select("a.sushi-restaurant").first().attr("abs:href");
    

    希望这会有所帮助!

    【讨论】:

    • 您的回答完全有道理,但是当我运行 Elements links = doc.select("a.sushi-restaurant"); 时我得到空值,并且我知道 sushi-restaurant 类存在,因为当我运行 getElementByClass("sushi-restaurant") 并且它有效。
    • select() 永远不会返回 null ——它可能返回 0 个元素,但永远不会返回 null。我已经更新以包含一个完整的 sn-p,我已经测试过它可以正确打印 URL。你能测试一下并告诉我吗?使用 jsoup 1.6.1。
    • 你是对的。我的班级名称错误。太棒了。非常感谢。
    • 如果类名中有空格,你会如何处理?例如:“寿司餐厅”。 “a.sushi restaurant”行得通吗?
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 2021-07-18
    • 2012-12-31
    • 2016-06-18
    • 1970-01-01
    • 2017-09-29
    • 2015-08-05
    • 1970-01-01
    相关资源
    最近更新 更多