使用Jsoup获取具体的URL

时间:2016-11-06 18:59:33

标签: java jsoup

我正在尝试弄清楚如何将无用的信息与jsoup的链接分开。 我应该在这里解析一堆代码:

view-source:https://vk.com/search?c%5Bq%5D=%D0%BA%D0%BE%D1%82&c%5Bsection%5D=communities

public class TestSoup  {
    public static void main (String[] args) throws Exception {
        Document doc = Jsoup.connect("https://vk.com/smcat").get();
        Elements links;
        //links = doc.select("div > a > img ");
        links = doc.select("[data-src_big]");

        System.out.println(links);
    }
}

我的输出现在:

<img src="https://pp.vk.me/c636126/v636126727/35e1b/ludjlj7T4i8.jpg" class="ph_img" data-id="-23530818_436648332" data-src_big="https://pp.vk.me/c636126/v636126727/35e1c/a1IyGrtjzUQ.jpg|600|448">

有人可以解释我如何从输出中提取第二个链接吗?非常感谢。

3 个答案:

答案 0 :(得分:2)

data-src_big属性,每个元素都有自己的值。

要迭代链接元素,您可以使用

for (Element el : links){
    ..    
}

要从元素获取指定属性的值,您可以使用

el.attr("attrribute_name")

如果属性的值是写为相对路径的URL地址,例如./foo/bar.jpg,但您希望将其作为http://server.com/foo/bar.jpg之类的绝对路径,则可以使用

el.absUrl("attribute_name")

答案 1 :(得分:1)

您只需要使用src方法从data-src_big找到的链接中同时获取div > a > imgattr(name)

for (Element element : doc.select("div > a > img")) {
    String src = element.attr("src");
    String big = element.attr("data-src_big");
}

答案 2 :(得分:1)

你可以在Jsoup cookbook中找到它。简而言之,您使用Element的attr方法

links = doc.select("[data-src_big]");
String linkStr = links.attr("data-src_big");

请注意links属于Elements类型,attr()只获取第一个匹配属性。