的我正在學習如何使用jsoup,我已經創建了一個名爲search
方法,它使用jsoup的選擇contains
和containsOwn
搜索一個給定的項目,回到它的價格。 (現在,項目名稱爲了測試目的而被硬編碼,但該方法稍後將接受參數以接受任何項目名稱)。Jsoup選擇返回所有值,而不是搜索值
我遇到的問題是選擇器不工作,並且頁面上的所有價格都將被返回,而不是正在搜索的一個項目,在這種情況下是「百葉窗」。因此,在此示例中,如果您按照鏈接進行操作,則該頁面上只有一個項目表示百葉窗,價格列爲「$ 30 - $ 110原價$ 18 - $ 66銷售額」,但該頁面上的每個項目都會返回。
我知道,使用jsoup我可以明確地調用div的名稱,並從中提取信息。但我想把它變成一個更大的項目,並從沃爾瑪,西爾斯,梅西等其他連鎖店提取同一物品的價格。不僅僅是我在我的代碼中使用的特定網站。因此,如果我想這樣做,我不能明確地調用div名稱,因爲這隻能解決一個站點的問題,而不能解決其他站點的問題,並且我想採取一種方法來同時包含大多數這些站點。
如何提取與其合適項目相關的價格?有沒有辦法做到這一點,以便項目和價格提取將適用於大多數網站?
我將不勝感激任何幫助。
private static String search(){
Document doc;
String priceText = null;
try{
doc = Jsoup.connect("http://www.jcpenney.com/for-the-home/sale/cat.jump?id=cat100590341&deptId=dept20000011").get();
Elements divs = doc.select("div");
HashMap items = new HashMap();
for(Element element : doc.select("div:contains(blinds)")){
//For those items that say "buy 1 get 1 free"
String buyOneText = divs.select(":containsOwn(buy 1)").text();
Element all = divs.select(":containsOwn($)").first();
priceText = element.select(":containsOwn($)").text();
items.put(element, priceText);
}
System.out.println(priceText);
}catch(Exception e){
e.printStackTrace();
}
return priceText;
}
謝謝您的幫助 – Rebecca 2014-12-08 19:28:21