[英]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.