[英]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”。
我们需要引用父元素,然后从中获取子元素,并假设子元素始终作为第一个子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.