使用扫描仪进行特定数据挖

时间:2013-06-01 19:00:47

标签: java java.util.scanner data-mining

我正在尝试构建一个程序,该程序将从网站获取页面源并仅存储一段代码。

package Program;

import java.net.*;
import java.util.*;

public class Program {
public static void main(String[] args) {
    String site = "http://www.amazon.co.uk/gp/product/B00BE4OUBG/ref=s9_ri_gw_g63_ir01?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-5&pf_rd_r=0GJRXWMKNC5559M5W2GB&pf_rd_t=101&pf_rd_p=394918607&pf_rd_i=468294";
    try {
        URL url = new URL(site);
        URLConnection connection = url.openConnection();
        connection.connect();
        Scanner in = new Scanner(connection.getInputStream());
        while (in.hasNextLine()) {
            System.out.println(in.nextLine());
        }
    } catch (Exception e) {
        System.out.println(e);
    }
}
}

到目前为止,这只会显示输出中的代码。我希望程序搜索特定字符串并仅显示价格。 例如

<tr id="actualPriceRow">
<td id="actualPriceLabel" class="priceBlockLabelPrice">Price:</td>
<td id="actualPriceContent"><span id="actualPriceValue"><b class="priceLarge">£599.99</b></span>
<span id="actualPriceExtraMessaging">

搜索class="priceLarge">并仅显示/存储599.99

我知道网站上有类似的问题但是我并不真正了解任何php并且想要一个java解决方案,尽管欢迎任何解决方案:)

2 个答案:

答案 0 :(得分:0)

您可以使用某些库进行解析,例如。 Jsoup

Document document = Jsoup.connect("http://www.amazon.co.uk/gp/product/B00BE4OUBG/ref=s9_ri_gw_g63_ir01?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-5&pf_rd_r=0GJRXWMKNC5559M5W2GB&pf_rd_t=101&pf_rd_p=394918607&pf_rd_i=468294").get();

然后你可以搜索具体元素

Elements el = document.select("b.priceLarge");

然后您可以获得此元素的内容,如

String content = el.val();

答案 1 :(得分:0)

OP写了一个问题编辑:

  

谢谢大家的回复,这真的很有帮助,这就是答案:

package Project;
import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class Project {

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {

    Document doc;
    try {
        doc = Jsoup.connect("url of link").get();
        String title = doc.title();
        System.out.println("title : " + title);
        String pricing = doc.getElementsByClass("priceLarge").text();
        String str = pricing;
        str = str.substring(1);
        System.out.println("price : " + str);
    } catch (Exception e) {
        System.out.println(e);
    }
}
}