2016-10-30 5 views
2

Zum Zweck des Lernens versuche ich, einen einfachen Währungsumrechner zu schreiben. Ich möchte den aktualisierten Tarif von Google erhalten.Den Wert einer Java-Variable aus dem URL-Inhalt erhalten

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(); 

} 

Es wird mir die Quelle html:

<div id=currency_converter_result>1 USD = <span class=bld>77.9284 BDT</span> 

Also muss ich nur die Rate 77,9284 BDT und speichern sie in einer Variablen.

Ich bekomme keine Ahnung, wie es geht! Brauche ich eine Art Regex?

Jede Hilfe wird geschätzt!

Antwort

0

Um die DOM-Elemente effektiv zu extrahieren, können Sie den HTML-Inhalt mit der Bibliothek jsoup analysieren.

Bitte benutzen Sie den folgenden Code-Schnipsel (import org.jsoup package auf Klassenebene) für Ihre Anforderung:

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); 
    } 
+0

Diese Lösungen sehr nah an meinen Bedürfnissen. Ist es möglich, nur das BDT-Ergebnis zu erhalten, das in kodr

+0

Elemente r = element.getElementsByClass (" bld "); bearbeitet – kodr

+0

Sie können substring verwenden: String dollarValue = textstring (text.indexOf ("=") + 2); – developer

0

Sie können jSoup Bibliothek verwenden analysiert es HTML-Daten in Java und von dort können Sie den Wert der span mit Klasse bdt erhalten.

0

Wenn Sie eine Bibliothek nicht verwenden möchten, können Sie die Pattern-Klasse verwenden, aber ist keine gute Idee, HTML/XML mit Regex zu analysieren. Siehe diesen Beitrag: 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(); 
} 
Verwandte Themen