Jsoup получить HREF в классе - PullRequest
8 голосов
/ 26 июля 2011

У меня есть этот 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 для этого конкретного класса.

Спасибо, ребята

Ответы [ 2 ]

11 голосов
/ 27 июля 2011

Вы можете выбрать элементы по классу. Этот пример находит элементы с классом 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");

Надеюсь, это поможет!

0 голосов
/ 26 июля 2011
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
   }
}
...