2017-07-17 8 views
1

私はこのページソースから価格9.99を取得します。 https://www.walmart.com/ip/Terminator-Genisys-DVD/45863333?sourceid=api00ctd43f4bc7559f459fae574f62a0e9de01&affp1=%7Capk%7C&affilsrc=api&veh=aff&wmlspartner=readonlyapi価格を抽出するためにjsoupを使用する

私が使用していたコードは

public String doubleCheckPrice(String html, IDoubleCheckable availability) throws URISyntaxException, IOException{ 
    Document doc = Jsoup.parse(html); 
    String price = null; 

    for(Element meta : doc.select("div")) { 
     if((meta.attr("itemprop") != null) && (meta.attr("itemprop").equals("price"))) { 
     price = meta.text(); 
     price = price.replace("$", "").trim(); 
     logger.debug("Extracted price via double check {} for availability {}", price, availability.getUrl()); 
     } 
    } 

    if(price == null) { 
     Elements elements = doc.select(".js-price-display"); 
     if(elements != null && elements.size() > 0) { 
     price = elements.get(0).text(); 
     price = price.replace("$", "").trim(); 
     } 
    } 

    return price; 
    } 

あるしかし、私はnullを取得しています。どんな助けもありがとう。 ありがとう

+0

@ saka1029どこのコードで正確に私はそれを試してほしいですか?私はあなたに教えてくれますか? – user3128634

答えて

0

私はこの目的のためにウォルマートのAPIを使うべきだと思います。それが最善の方法です。

また、APIを使用できない場合は、このためのフレームワークを使用する必要があります。あなたはそれを見てくださいhttps://jsoup.org/

このフレームワークは、構造化文書を作成し、タグ、クラスまたはIDを反復することができます。次に、findElementsByIdを使用してデータを取得できます。サイトの例を見てください。

0

私はそれがここ

for(Element meta : doc.select(".Price-group")) { 

     if(meta.attr("aria-label")!=null) 
     { 
      System.out.println(meta.attr("aria-label")); 
      price=meta.text(); 
      price = price.replace("$", "").trim(); 
      logger.debug("Extracted price via double check {} for availability {}", price, availability.getUrl()); 


     } 
0

あるthis.Hereのためのソリューションを持って解決

Elements priceElms=document.select(".prod-BotRow.prod-showBottomBorder.prod-OfferSection .prod-PriceHero .Price-group"); 
if(priceElms.size() > 0){ 
String price=priceElms.get(0).text(); 
price=price.replace("$",""); 
} 

ちょうど適切なあなたが望むフィールドと使用を選択し、値を取得するためにループする必要はありませんJsoupセレクタ。 ありがとう

関連する問題