본문 바로가기

Android

[App]Jsoup / URL을 통한 날씨 데이터 파싱(Pasing)하기

오늘은 안드로이드에서 네이버의 날씨 데이터를 파싱하여 가져오는 간단 소스를 포스팅.




핵심 기능


- 날씨 데이터를 가져오는 2가지 방법

  - Jsoup / URL방식 사용 (MainActivity.java 참고)


- AsyncTask<p1Type, p2Type, ReturnType> 을 사용하여 네트워크 작업을 실시

  - AsyncTask<String, String, String> result = weatherConnection.execute("","");


- AndroidManifest.xml에서 Internet-permission(권한)을 주어야한다.

  - <uses-permission android:name="android.permission.INTERNET" />


- activity_main.xml에서 화면 Background 변경

  - @drawable/bg1



App 배경화면 설정



- 사용할 배경화면을 drawable 폴더에 이미지파일을 넣는다.

- 가운데에 안드로이드 화면에서 배경을 마우스로 클릭해주자. (PC화면)

- 오른쪽 Properties 항목에서 Background 속성을 찾은후 @drawable/"파일명" 을 입력하기.


*Textview는 날씨가 출력 될 부분으로 추가함.



파싱할 URL(날씨정보)

- 네이버 날씨정보 -> 지역별 날씨(서초구) -> URL복사



아래는 내가 가져올 날씨정보 URL



MainActivity.Java


onCreate 메소드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
  protected void onCreate(Bundle savedInstanceState) {
 
        // 건들이지 말자
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        // <--
 
        TextView textView = (TextView)findViewById(R.id.textView);
 
        WeatherConnection weatherConnection = new WeatherConnection();
 
        AsyncTask<StringStringString> result = weatherConnection.execute("","");
 
        System.out.println("RESULT");
 
        try{
            String msg = result.get();
            System.out.println(msg);
 
            textView.setText(msg.toString());
 
        }catch (Exception e){
 
        }
    }
cs




Jsoup을 사용한 데이터 파싱


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Jsoup을 이용한 날씨데이터 Pasing하기.
String path = "http://weather.naver.com/rgn/townWetr.nhn?naverRgnCd=09650510";
 
Document document = Jsoup.connect(path).get();
 
Elements elements = document.select("em");
 
System.out.println(elements);
 
Element targetElement = elements.get(2);
 
String text = targetElement.text();
 
System.out.println(text);
 
return text;
cs


- 네이버 날씨 에서 온도 및 날씨상태 부분은 <em>태그로 감싸있으므로 em태그에서 온도 및 날씨상태를 추출한다

  (참고 :


 네이버 날씨에서 f12눌러 소스코드 확인할것)



URL을 사용한 데이터 Reading


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16

// URL접속하여 HTML 가져오기.
URL url = new URL("http://weather.naver.com/rgn/townWetr.nhn?naverRgnCd=09650510");
 
System.out.println("Call target URL try....");
 
InputStream inputStream = url.openStream();
Scanner scanner = new Scanner(inputStream, "UTF-8");
 
while (true){
    try{
            System.out.println(scanner.nextLine());
        }catch (Exception e){
            e.printStackTrace();
            break;
        }
    }

cs





결과


▼ 모바일 화면






em태그 에서 추출한 현재 날씨온도 와 상태 를 System.out으로 확인





프로젝트 소스(다운로드)