簡體   English   中英

使用jsoup提取價格

[英]Using jsoup for extracting price

我想從此頁面來源獲得價格9.99。 https://www.walmart.com/ip/Terminator-Genisys-DVD/45863333?sourceid=api00ctd43f4bc7559f459fae574f62a0e9de01&affp1=%7Capk%7C&affilsrc=api&veh=aff&wmlspartner=readonlyapi

我正在使用的代碼是

    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;
  }

但是我越來越空了。 任何幫助將不勝感激。 謝謝

我認為您應該為此目的使用Walmart的API。 那是最好的方法。

另外,如果您不能使用API​​,則應為此使用框架。 看看它https://jsoup.org/

該框架將允許您創建結構化文檔並幫助您迭代標簽,類或ID。 然后,您可以使用findElementsById來獲取數據。 看一下該站點的示例。

我為此找到了解決方案。

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


        }

這是解決方案

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選擇器即可。 謝謝

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM