我试图从百思买检索商品名称和价格,如何在第一个价格后停止?

时间:2014-01-20 19:42:51

标签: java jsoup

由于“金额”类用于“我们还推荐”部分中的商品价格,所有价格而不仅仅是主要商品价格。如何让它在第一个之后停止寻找更多价格?这是我的代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class BestBuy {
  //retrieves item name and price from Best Buy
    public static void main(String[] args) throws Exception {
        String url = "http://www.bestbuy.ca/en-CA/product/samsung-samsung-galaxy-tab-3-  8-0-16gb-android-4-2-tablet-with-exynos-4212-processor-white-sm-t310/10254746.aspx?path=8654a6d491c7d5a9465456671fa126e4en02";
        Document document = Jsoup.connect(url).get();

        String amount = document.select(".amount").text();
        System.out.println("Price: " + amount);

        String name = document.select(".product-title").text();
        System.out.println("Item Name: " + name);

   }

}

谢谢。

2 个答案:

答案 0 :(得分:1)

如果您确定所需Element是首选的Elements,则可以first()选择它。

尝试

String url = "http://www.bestbuy.ca/en-CA/product/samsung-samsung-galaxy-tab-3-8-0-16gb-android-4-2-tablet-with-exynos-4212-processor-white-sm-t310/10254746.aspx?path=8654a6d491c7d5a9465456671fa126e4en02";
Document document = Jsoup.connect(url).get();

String amount = document.select(".amount").first().text();
System.out.println("Price: " + amount);

String name = document.select(".product-title").first().text();
System.out.println("Item Name: " + name);

Ouptut:

Price: $229.99
Item Name: Samsung GALAXY Tab 3 8.0 16GB Android 4.2 Tablet with Exynos 4212 Processor - White

答案 1 :(得分:0)

我没有使用过jsoup,但是从API Reference开始,Selector类似乎允许你使用CSS选择器,例如:eq。请参阅example here

  

td:eq(0)找到每行的第一个单元格

您应该可以使用以下内容:

String amount = document.select("span.amount:eq(0)").text();

或者,并且可能更好,select方法会返回Elements implements List,因此您可以使用

String amount = document.select(".amount)").get(0).text();