2013-03-22 79 views
0

我在JAVA中使用JSOUP DOM解析器在URL http://www.walmart.com/search/search-ng.do?tab_value=all&search_query=camera&search_constraint=0&Find=Find&ss=false&ic=16_32上刪除沃爾瑪頁面。使用JSOUP刪除重複的elementText值

我建立基於用戶參數的URL和建設使用

Document doc = Jsoup.parse(contentVar); 

對於下一步我想打印所有的產品/價格DOM對象。我用下面的代碼:

String price = doc.getElementsByClass("camelPrice").text(); 
String title = doc.getElementsByClass("ListItemLink").text();  
System.out.println("Product: " + title); 
System.out.println("Price: "+ price); 

這裏我使用的價格和產品說明標籤。但我的結果是:

 
Title/Product Name: C1, C2, ... C16 (c is camera title) 
Price: $279.95 $279.95 $479.00 $479.00 $60.00 $60.00 $99.00 $99.00 $429.00 $429.00 $129.00 $129.00 $109.00 $109.00 $89.00 $89.00 $384.00 $384.00 $69.00 $69.00 $279.00 $279.00 $129.00 $129.00 $55.20 - $69.00 $55.20 - $69.00 $74.00 $74.00 $119.00 $119.00 

此處價格因可能的quickview標記而被複制。有沒有辦法用任何JSOUP方法去除價格duplicacy

回答

2

好看到HTML DOM我注意到,有在這個意義上的重複,有一個價格

<div class="ItemShelfAvail">  <----------- SEE HERE 
<div class="OnlinePriceAvail"> 
<div class="PriceHeader OnlineHead">Online</div> 
<div class="PriceContent"> 
<div class="PriceDisplay" id="price_display_23204350_2"> 
<div class="PriceCompare"> 
<div class="camelPrice"><span class="prefixPriceText2"></span><span class="bigPriceText2">$279.</span><span class="smallPriceText2">00</span><span></span></div> 

和價格

<div class="OnlinePriceAvail"> 
<div class="PriceHeader OnlineHead">Online</div> 
<div class="PriceContent"> 
<div class="PriceDisplay" id="price_display_23204350_2"> 
<div class="PriceCompare"> 
<div class="camelPrice"><span class="prefixPriceText2"></span><span class="bigPriceText2">$279.</span><span class="smallPriceText2">00</span><span></span></div> 

您必須從兩者中看到您想要的列表,然後放入適當的選擇器。如果你想讓他們兩個都帶上由getElementsByClass返回的元素列表並操縱每個價格。

getElementsByClass返回元素,它是每個節點都是Element類型的列表。你可以做

Elements elPrice = doc.getElementsByClass("camelPrice"); 
1

我知道,這個現在可能是無用的線程的創建者,但我發現這如何找到在英國亞馬遜產品的價格看時。

String pricing = doc.getElementsByClass("priceLarge").text(); 
System.out.println("price : " + pricing); 

下面是代碼做到這一點:)

+0

是的,它現在還不是非常有用的。感謝您的迴應:) – CodeMonkey 2013-06-04 14:51:52