我想从这个页面来源获得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;
}
但是我变得空了。任何帮助将不胜感激。 感谢
答案 0 :(得分:0)
我认为你应该为此目的使用沃尔玛的API。这是最好的方式。
或者,如果您不能使用API,则应使用此框架。看看它nvm
此框架允许您创建结构化文档,并帮助您迭代标签,类或ID。然后,您可以使用findElementsById来获取数据。看一下网站的例子。
答案 1 :(得分: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());
}
答案 2 :(得分:0)
这是解决方案
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选择器。 感谢