2016-11-06 51 views
0

我在想如何区分无用信息与链接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"> 

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

+0

你需要提取这个'data-src_big =“https://pp.vk.me/c636126/v636126727/35e1c/a1IyGrtjzUQ.jpg|600|448”' – Joe

回答

2

data-src_big属性和每个元素都可以有它自己的价值。

要通过链接元素迭代,你可以使用

for (Element el : links){ 
    ..  
} 

要获得从元素指定的属性值可以使用

el.attr("attrribute_name") 

如果属性的值是写像./foo/bar.jpg相对路径URL地址但你想得到它作为像http://server.com/foo/bar.jpg你可以使用的绝对路径

el.absUrl("attribute_name") 
+0

你击败了我:) +1 – luksch

+0

非常感谢,先生。 –

1

你只需要获得使用attr(name)方法,通过div > a > img发现的链接都srcdata-src_big

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

你打我吧:) +1 – luksch

1

你可以在Jsoup cookbook找到它。总之,您使用attr方法元素

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

注意links的类型元素,并attr()刚刚获得第一个匹配的属性。