Java:如何使用Jsoup从html中提取特定数据?

时间:2015-08-02 11:16:03

标签: java

基本上,我试图从此link

中提取股票的当前价格

通过查看页面源代码,我希望能够从中提取数字:

<meta itemprop="price"
        content="31.40" />

这是我的Java代码。

public double getCurrentPrice() throws IOException{
        String url = "https://www.google.com.hk/finance?q=0023&ei=yF14VYC4F4Wd0ASb64CoCw";
        Document doc = Jsoup.connect(url).get();
        Element content = doc.getElementById("meta");
}

我一直收到这个错误:

456.0Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
    Element cannot be resolved to a type

    at application.Trade.getCurrentPrice(Trade.java:45)
    at application.Trade.main(Trade.java:64)

错误消息不是很有帮助。我该怎样克服这个?

1 个答案:

答案 0 :(得分:1)

导入正确的类。 meta也不是id而是标记。所以你不能使用getElementById来获取该元素。使用itemprop属性获取此元素并通过content属性获取值。< / p>

通配符仅从包中导入类。例如

import org.jsoup.*将导入org.jsoup.nodes但不导入org.jsoup.nodes.Element;,因为org.jsoup.nodes.Element位于org.jsoup.nodes包中。

例如

import java.io.IOException;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
public class example {

    public static void main(String[] args) throws IOException {
        String url = "https://www.google.com.hk/finance?q=0023&ei=yF14VYC4F4Wd0ASb64CoCw";
        Document doc = Jsoup.connect(url).get();
        Element content = doc.select("meta[itemprop=price]").first();
        System.out.println(content.attr("content"));
    }
}

输出

31.40

编辑

知道你应该导入哪些类.....

考虑这个陈述

Document doc 

现在您正在创建Document对象,因此您应该导入Document类。如果您阅读jsoup api,则可以看到此类层次结构。

正如您所看到的,Document是一类包org.jsoup.nodes 所以你导入类import org.jsoup.nodes.Document;。你必须阅读api。无论如何,像netbeans一样,eclipse建议你输入一些类,这很容易,节省了很多时间。

enter image description here