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の 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);

ここでは、価格と製品の説明にタグを使用しています。しかし、私の結果は次のとおりです。

タイトル/商品名:C1、C2、…C16(cはカメラタイトル)
価格:$ 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 $ 388.00 $ 125.00 $ 125.00 $ 128.00 $ 128.00 $ 125.00 $ 128.00

ここでは、クイックビュー タグの可能性があるため、価格が重複しています。JSOUPメソッドを使用して価格の重複を取り除く方法はありますか

4

2 に答える 2

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>

2 つのリストから必要なリストを確認してから、適切なセレクターを配置する必要があります。両方が必要な場合は、getElementsByClass によって返された Elements リストを取得し、各価格を操作します。

getElementsByClass は、すべてのノードが Element タイプのリストである Elements を返します。できるよ

Elements elPrice = doc.getElementsByClass("camelPrice");
于 2013-03-22T07:31:09.620 に答える
1

これはスレッドの作成者には役に立たないかもしれないことはわかっていますが、Amazon uk で製品の価格を見つける方法を調べているときにこれを見つけました。

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

これを行うコードは次のとおりです:)

于 2013-06-02T18:50:05.703 に答える