从URL内容中获取java变量的值

时间:2016-10-30 09:36:43

标签: java

出于学习目的,我正在尝试编写一个简单的货币转换器。我想从谷歌获得最新的费率。

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的费率并将其存储在一个变量中。

我不知道怎么做!我需要一些正则表达式吗?

任何帮助将不胜感激!

3 个答案:

答案 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);
    }
相关问题