我正在使用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方法删除价格重复
答案 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);
以下是执行此操作的代码:)