出于学习目的,我正在尝试编写一个简单的货币转换器。我想从谷歌获得最新的费率。
public void Google() throws IOException {
String url="https://www.google.com/finance/converter?a=1&from=USD&to=BDT";
URL theUrl=new URL(url);
URLConnection openUrl=theUrl.openConnection();
BufferedReader input = new BufferedReader(new InputStreamReader(openUrl.getInputStream()));
String result=null;
while ((result=input.readLine()) != null){
System.out.println(result);
}
input.close();
}
它为我提供了html源代码:
<div id=currency_converter_result>1 USD = <span class=bld>77.9284 BDT</span>
所以我只需要77.9284 BDT的费率并将其存储在一个变量中。
我不知道怎么做!我需要一些正则表达式吗?
任何帮助将不胜感激!
答案 0 :(得分:0)
你可以使用jSoup库来解析java中的html数据并从那里你可以获得带有类bdt的span的值。
答案 1 :(得分:0)
如果您不想使用库,可以使用Pattern
类,但使用正则表达式解析HTML / XML不是一个好主意。请参阅此帖子:Question about parsing HTML using Regex and Java
public void Google() throws IOException {
URL url = new URL("https://www.google.com/finance/converter?a=1&from=USD&to=BDT");
URLConnection openUrl = url.openConnection();
BufferedReader input = new BufferedReader(new InputStreamReader(openUrl.getInputStream()));
String result = null;
Pattern pattern = Pattern.compile("([0-9]*.?[0-9]* BDT)");
while ((result = input.readLine()) != null) {
Matcher matcher = pattern.matcher(result);
if (matcher.find()) {
System.out.println(matcher.group());
break;
}
}
input.close();
}
答案 2 :(得分:-1)
要有效地提取DOM元素,您可以使用jsoup库来解析html内容。
请根据您的要求使用以下代码段(import org.jsoup package
级别):
public void google() throws IOException {
Document doc = Jsoup.connect("https://www.google.com/finance/converter?a=1&from=USD&to=BDT").get();
Element element = doc.getElementById("currency_converter_result");
String text = element.text();
System.out.println(text);
}