如何使用JSoup获取超链接href?

时间:2014-07-17 14:45:51

标签: java html-parsing jsoup

我有以下jsFiddle

  

http://jsfiddle.net/B5zvV/

我正在尝试使用JSoup来获取第238行的超链接' href字符串的值:

<a href="/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450">

因此,期望的结果是获得值为:

的String
/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450

这是我的代码:

Document doc = Jsoup.connect("http://myapp.example.com/fizz.html").get()
Elements elems = doc.getElementsByAttributeValueContaining("href", "repositoryId")

当我运行时,elems的值为空:为什么,我需要做什么才能获得所需的字符串?

1 个答案:

答案 0 :(得分:1)

在这种情况下,getElementsByAttributeValueContaining()方法将返回多个值,因为许多hrefs具有repositoryId。如果您特别关注第238行,那么a会被li括在item item-default类中。其中只有一个li和两个标签。就像第一个那样拿

String html = "<li class=\"item item-default\" data-item-id=\"28049450\" id=\"item-28049450\">"
                + "<a href=\"/chain/admin/config/editRepository.action?planKey=AB-CSD&amp;repositoryId=28049450\">"
                    + "<h3 class=\"item-title\">MCAppRepo <span class=\"item-default-marker grey\">(default)</span></h3>"
                + "</a>"
                + "<a href=\"/chain/admin/config/confirmDeleteRepository.action?planKey=AB-CSD&amp;repositoryId=28049450\" class=\"delete\" title=\"Remove repository\">"
                    + "<span class=\"assistive\">Delete</span>"
                + "</a>"
            + "</li>";

Document doc = Jsoup.parse(html);
Elements elems = doc.select("li.item.item-default > a");
System.out.println(elems.first().attr("href"));