繁体   English   中英

JSOUP Java Web抓取/解析

[英]JSOUP Java Web Scraping / Parsing

我希望创建一个提交1个链接的程序,然后从该链接中提取某些功能(例如,下载计数,likecount等)。 我可以提取这些很好的内容,因为它们只是标题。 但是我不明白如何在另一个链接中提取链接的标题。 举个例子,如果我输入google.com,我希望提取标题“显示X找到的结果数量”,这是另一个链接,但是X不是静态的(即链接的标题不是静态的,它根据结果​​数(在我的情况下为运行)进行更改)

为了更好地解释我的代码是:

import org.jsoup.Jsoup;


public static void main(String[] args) throws Exception {
    String url = "https://www.openml.org/t/31";
    Document document = Jsoup.connect(url).get();

   // String question = document.select("#question .post-text").text();
   // System.out.println("Question: " + question);

    Elements title = document.select("div#subtitle");
    System.out.println("Title:  " + title.text()); 

    Elements downloadcount = document.select("span#downloadcount");
                System.out.println(downloadcount.text());

    Elements likecount = document.select("span#likecount");
                System.out.println(likecount.text());

    Elements nr_of_issues = document.select("span#nr_of_issues");
                System.out.println(nr_of_issues.text());      

    String runs = ("<i class=\"fa fa-star\"></i> <a href=\"#taskruns\" data-toggle=\"tab\">396900 runs submitted</a>");
    Document number = Jsoup.parse(runs);

            Element link = number.select("a").first();
            String linkText = number.text();
            System.out.println(linkText);
        }
 }

标题,downloadcount,likecount和nr_of_issues可以正常工作,因为它们不是链接。 只是“运行”不起作用。 我无法实现String那样运行的HTML代码,因为它总是在变化( 如您现在所看到的396900 ,但是明天将其更改为400000怎么办?)

根据我对OP的评论,您可以看到我们要引用的文本不是静态的,但是在其上方有一个元素,该元素具有id =“ detail”。

网站HTML中的元素位置

我们需要引用父元素,然后从中获取子元素,并假设子元素始终作为第一个子div元素的子元素保持(希望Inception并不是一部令人困惑的电影)。

这是我们在Java中的方法:

public static void main(String[] args) throws Exception {
    String url = "https://www.openml.org/t/31";
    Document doc = Jsoup.connect(url).get();

    Element parentElement = doc.select("div#detail").first();
    Elements h2Element = parentElement.child(1).select("h2");
    System.out.println(h2Element.text());
}

运行上面的Java将打印:

396928运行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM