Java jsoup链接提取

时间:2016-04-14 13:36:52

标签: java html jsoup

我试图在jsoup中提取给定元素中的链接。在这里我做了什么,但它不起作用:

   Document doc = Jsoup.connect(url).get();
        Elements element = doc.select("section.row");
        Element s = element.first();
        Elements se = s.getElementsByTag("article");


            for(Element link : se){
                System.out.println("link :" + link.select("href"));
            }

这是html: enter image description here

我要做的是获取文章类的所有链接。我想可能首先我必须选择section class =" row",然后在某种程度上得到文章类的链接,但我无法使它工作。

2 个答案:

答案 0 :(得分:1)

试试这个。

Document doc = Jsoup.connect(url).get();      

    Elements section = doc.select("#main"); //select section with the id = main
    Elements allArtTags = section.select("article"); // select all article tags in that section
    for (Element artTag : allArtTags ){
        Elements atags = artTag.select("a"); //select all a tags in each article tag
        for(Element atag : atags){
            System.out.println(atag.text()); //print the link text or 
            System.out.println(atag.attr("href"));//print link
        }
    }

答案 1 :(得分:0)

我在我的一个项目中使用它:

final Elements elements = doc.select("div.item_list_section.item_description");

您必须获取要从中提取链接的元素。

private static ... inspectElement(Element e) {
        try {
            final String name = getAttr(e, "a[href]");
            final String link = e.select("a").first().attr("href");
            //final String price = getAttr(e, "span.item_price");
            //final String category = getAttr(e, "span.item_category");
            //final String spec = getAttr(e, "span.item_specs");
            //final String datetime = e.select("time").attr("datetime");

            ...
        }
        catch (Exception ex) { return null; }
}

private static String getAttr(Element e, String what) {
    try {
        return e.select(what).first().text();
    }
    catch (Exception ex) { return ""; }
}