基本上,我试图从此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)
错误消息不是很有帮助。我该怎样克服这个?
答案 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建议你输入一些类,这很容易,节省了很多时间。