2016-10-30 3 views
2

학습 목적으로 간단한 통화 변환기를 작성하려고합니다. Google에서 업데이트 된 요율을 받고 싶습니다. 그것은 나에게 HTML 소스를 얻을 수URL 내용의 자바 변수 값 받기

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

} 

는 :

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

그래서 난 단지 속도 77.9284 BDT 필요하고 변수에 저장합니다.

어떻게해야하는지 모릅니다. 내가 정규식을 좀 필요로하니?

도움이 될 것입니다!

답변

0

DOM 요소를 효과적으로 추출하려면 jsoup 라이브러리를 사용하여 HTML 콘텐츠를 구문 분석 할 수 있습니다.

귀하의 요구에 대한 (클래스 레벨에서 import org.jsoup package) 아래의 코드를 사용하십시오 : 당신이 라이브러리를 사용하지 않으려면, 당신은 Pattern 클래스를 사용하지만, 좋은 생각이 아니다 수

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

이 솔루션은 내 필요에 매우 가깝습니다. kodr

+0

요소 r = element.getElementsByClass ("bld "); worked – kodr

+0

부분 문자열을 사용할 수 있습니다. String dollarValue = text.substring (text.indexOf ("=") + 2); – developer

0

당신은 자바에서 HTML 데이터를 파싱하는 jSoup 라이브러리를 사용할 수 있습니다. 그리고 거기에서 클래스 bdt로 스팬의 값을 얻을 수 있습니다.

0

regex로 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(); 
} 
관련 문제