使用JSOUP删除重复的elementText值

时间:2013-03-22 07:19:45

标签: java jsoup

我正在使用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上删除Walmart页面。

我正在根据用户参数构建URL并使用

构建DOM对象
Document doc = Jsoup.parse(contentVar); 

下一步我要打印所有产品/价格。我使用了以下代码:

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方法删除价格重复

2 个答案:

答案 0 :(得分: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返回的Elements列表并操纵每个价格。

getElementsByClass返回Elements,其中每个节点都是Element类型的列表。你可以做到

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

答案 1 :(得分:1)

我知道这对于线程的创建者来说现在可能毫无用处,但我在查看如何在亚马逊上找到产品的价格时发现了这一点。

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

以下是执行此操作的代码:)