繁体   English   中英

JSoup如何将元素存储在数组中?

[英]JSoup how to store elements in an array?

我正在制作一个可抓取亚马逊页面的Java程序。 当有人输入搜索查询并显示结果页面时,我的程序将获取所有结果价格。 我已经知道如何找到这些价格并将其打印到控制台。 例如,假设用户搜索了“勺子”一词,我输入以下代码:

Elements prices = doc.select("span.s-price");
    System.out.println("Prices: " + prices);

然后,我收到以下输出:

Prices: <span class="a-size-base a-color-price s-price a-text-bold">CDN$ 7.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 4.24</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 12.00</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 9.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 22.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 10.00</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 5.94</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 4.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 4.79</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 5.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 15.48</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 4.07</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 5.88</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 12.99</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 6.71</span>
<span class="a-size-base a-color-price s-price a-text-bold">CDN$ 11.99</span>

但是,我不知道如何获取这些字符串并将其存储在数组中? 我更简单地说就是“ CDN $ double”值,尽管我认为我知道如何处理该问题。 如何将这些字符串存储为数组?

这是我感兴趣的一部分Amazon.ca源代码中的代码(冗长而混乱,我很抱歉):

<div id="center">


<div id="atfResults" class="a-row s-result-list-parent-container"><ul id="s-results-list-atf" class="s-result-list s-col-1 s-col-ws-1 s-result-list-hgrid s-height-equalized s-list-view s-text-condensed"><li id="result_0" data-asin="B00X08P338" class="s-result-item"><div class="s-item-container"><div class="a-fixed-left-grid"><div class="a-fixed-left-grid-inner" style="padding-left:160px"><div class="a-fixed-left-grid-col a-col-left" style="width:160px;margin-left:-160px;_margin-left:-80px;float:left;"><div class="a-row"><div class="a-column a-span12 a-text-center"><a class="a-link-normal a-text-normal" href="http://www.amazon.ca/HIC-Harold-Cocktail-Stainless-12-Inch/dp/B00X08P338/ref=sr_1_1?ie=UTF8&amp;qid=1436286484&amp;sr=8-1&amp;keywords=spoon"><img alt="Product Details" src="http://ecx.images-amazon.com/images/I/21TcgyjDH%2BL._AA160_.jpg" onload="viewCompleteImageLoaded(this, new Date().getTime(), 16, false);" class="s-access-image cfMarker" height="160" width="160"></a></div></div></div><div class="a-fixed-left-grid-col a-col-right" style="padding-left:2%;*width:97.6%;float:left;"><div class="a-row a-spacing-small"><a class="a-link-normal s-access-detail-page  a-text-normal" title="HIC Harold Import Bar Cocktail Mixing Spoon, 18/8 Stainless Steel, 12-Inch" href="http://www.amazon.ca/HIC-Harold-Cocktail-Stainless-12-Inch/dp/B00X08P338/ref=sr_1_1?ie=UTF8&amp;qid=1436286484&amp;sr=8-1&amp;keywords=spoon"><h2 class="a-size-medium a-color-null s-inline s-access-title a-text-normal">HIC Harold Import Bar Cocktail Mixing <strong>Spoon</strong>, 18/8 Stainless Steel, 12-Inch</h2></a><div class="a-row a-spacing-none"><span class="a-size-small a-color-secondary">by </span><span class="a-size-small a-color-secondary">HIC Harold Import Co.</span></div></div><div class="a-row"><div class="a-column a-span7"><div class="a-row a-spacing-none"><a class="a-link-normal a-text-normal" href="http://www.amazon.ca/HIC-Harold-Cocktail-Stainless-12-Inch/dp/B00X08P338/ref=sr_1_1?ie=UTF8&amp;qid=1436286484&amp;sr=8-1&amp;keywords=spoon"><span class="a-size-base a-color-price s-price a-text-bold">CDN$ 7.99</span></a>

并非最干净的解决方案,但它应该可以工作。 基本上,元素只是元素列表。

    ArrayList<Element> elements = new ArrayList<>();

    for (Element e : prices) {
        elements.add(e);
    }

    Element[] elementArr = elements.toArray(new Element[]{});

你可以做这样的事情。

Elements elements = d.select("span.s-price");
String[] prices = new String[elements.size()];
for (int i = 0; i < elements.size(); i++) {
    prices[i] = elements.get(i).text();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM