Android에서 jsoup를이용하여 HTML 파서(Parser)

새로운 안드로이드 프로젝트를 하나 생성하고…

http://jsoup.org/download 에서 jar 파일을 다운로드 받아 안드로드이 프로젝트 디렉토리의 libs 디렉토리에 복사해줍니다.

 

 

 

 

이제 안드로이드 프로젝트에서 jar 파일을 선택 후.. 마우스 오른쪽 버튼을 클릭하여 라이브러리로 추가해줍니다.

 

 

AndroidMenifest.xml 파일에 다음 한 줄을 추가해줍니다.

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

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

 

 

 

activity_main.xml 파일에 텍스트 뷰 하나와 버튼 하나를 추가해주었습니다.

  1. <?xml version="1.0" encoding="utf-8"?>    
  2. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"    
  3.     xmlns:tools="http://schemas.android.com/tools"    
  4.     android:layout_width="match_parent"    
  5.     android:layout_height="match_parent"     
  6.    android:paddingLeft="@dimen/activity_horizontal_margin"    
  7.     android:paddingRight="@dimen/activity_horizontal_margin"    
  8.     android:paddingTop="@dimen/activity_vertical_margin"    
  9.     android:paddingBottom="@dimen/activity_vertical_margin"     
  10.     tools:context=".MainActivity">    
  11.       
  12.     <TextView    
  13.         android:layout_width="fill_parent"    
  14.         android:layout_height="fill_parent"    
  15.         android:text=""    
  16.         android:id="@+id/textView"    
  17.         android:maxLines = "100"    
  18.         android:scrollbars = "vertical"    
  19.         android:layout_above="@+id/button" />    
  20.       
  21.     <Button    
  22.         android:layout_width="wrap_content"    
  23.         android:layout_height="wrap_content"    
  24.         android:text="HTML 가져오기"    
  25.         android:id="@+id/button"    
  26.         android:layout_alignParentBottom="true"    
  27.         android:layout_centerHorizontal="true" />    
  28.       
  29. </RelativeLayout>    

 

 

이제 MainActivity.java에 필요한 코드를 작성합니다.

  1. package com.tistory.webnautes.jsouptest;    
  2.       
  3. import android.os.AsyncTask;    
  4. import android.support.v7.app.AppCompatActivity;    
  5. import android.os.Bundle;    
  6. import android.text.method.ScrollingMovementMethod;    
  7. import android.view.View;    
  8. import android.widget.Button;    
  9. import android.widget.TextView;    
  10.       
  11. import org.jsoup.Jsoup;    
  12. import org.jsoup.nodes.Document;    
  13. import org.jsoup.nodes.Element;    
  14. import org.jsoup.select.Elements;    
  15.       
  16. import java.io.IOException;    
  17.       
  18.       
  19. public class MainActivity extends AppCompatActivity {    
  20.       
  21.     private String htmlPageUrl = "http://www.daum.net/";    
  22.     private TextView textviewHtmlDocument;    
  23.     private String htmlContentInStringFormat;    
  24.       
  25.       
  26.     @Override    
  27.     protected void onCreate(Bundle savedInstanceState) {    
  28.         super.onCreate(savedInstanceState);    
  29.         setContentView(R.layout.activity_main);    
  30.       
  31.       
  32.         textviewHtmlDocument = (TextView)findViewById(R.id.textView);    
  33.         textviewHtmlDocument.setMovementMethod(new ScrollingMovementMethod());    
  34.       
  35.         Button htmlTitleButton = (Button)findViewById(R.id.button);    
  36.         htmlTitleButton.setOnClickListener(new View.OnClickListener() {    
  37.             @Override    
  38.             public void onClick(View v) {    
  39.                 JsoupAsyncTask jsoupAsyncTask = new JsoupAsyncTask();    
  40.                 jsoupAsyncTask.execute();    
  41.             }    
  42.         });    
  43.     }    
  44.       
  45.     private class JsoupAsyncTask extends AsyncTask<Void, Void, Void> {    
  46.       
  47.         @Override    
  48.         protected void onPreExecute() {    
  49.             super.onPreExecute();    
  50.         }    
  51.       
  52.         @Override    
  53.         protected Void doInBackground(Void... params) {    
  54.             try {    
  55.                 Document doc = Jsoup.connect(htmlPageUrl).get();    
  56.                 Elements links = doc.select("a[href]");    
  57.       
  58.                 for (Element link : links) {    
  59.                     htmlContentInStringFormat += (link.attr("abs:href")    
  60.                             + "("+link.text().trim() + ")\n");    
  61.                 }    
  62.       
  63.             } catch (IOException e) {    
  64.                 e.printStackTrace();    
  65.             }    
  66.             return null;    
  67.         }    
  68.       
  69.         @Override    
  70.         protected void onPostExecute(Void result) {    
  71.             textviewHtmlDocument.setText(htmlContentInStringFormat);    
  72.         }    
  73.     }    
  74.       
  75.       
  76. }    

 

 

실행시켜보면 www.daum.net에 있는 링크 주소와 링크 제목으로 이루어진 문자열들을 볼 수 있습니다.

 

[출처] http://webnautes.tistory.com/784

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
47 [Android SDK] 동기와 비동기 처리의 이해 및 안드로이드에서의 적용 file 졸리운_곰 2024.05.01 120
46 [Android SDK] [Android] 안드로이드에서 Delay 구현 - Thread 졸리운_곰 2024.05.01 99
45 [Android SDK] How to implement Do nothing for a certain period of time in Android 졸리운_곰 2024.05.01 134
44 [Android SDK] Android handle을 이용한 지연처리: postDelayed 등 졸리운_곰 2024.05.01 132
43 [Android SDK] [안드로이드 스튜디오] 로딩창 구현 (ProgressBar) file 졸리운_곰 2024.05.01 126
42 [Android SDK] [Android] 안드로이드 Alert 창 띄우기 file 졸리운_곰 2024.05.01 124
41 [Android SDK] Android thread에서 Toast 호출하기 file 졸리운_곰 2024.05.01 88
40 [Android SDK] runOnUiThread란? (개념과 사용법) file 졸리운_곰 2024.05.01 165
39 [Android SDK] How to enable/disable WiFi from an application? 안드로이드 와이파이 켜고 끄기 java 졸리운_곰 2024.05.01 138
38 [Android SDK] 안드로이드 화면꺼짐 방지 코드 졸리운_곰 2024.05.01 108
37 Android WebView javascriptInterface 사용하기 file 졸리운_곰 2018.03.26 656
36 안드로이드 에서 JSON 읽어오기 (JSON parser) file 가을의곰 2017.06.18 827
35 Android Basic JSOUP Tutorial file 졸리운_곰 2017.03.27 349
34 [Android] 안드로이드 웹페이지 파싱하기 - jsoup 이용하기 file 졸리운_곰 2017.03.27 724
» Android에서 jsoup를이용하여 HTML 파서(Parser) file 졸리운_곰 2017.03.27 764
32 윈도우즈에서 IntelliJ IDEA + android 개발환경 만들기 file 졸리운_곰 2016.12.05 488
31 단말기 내부에 폴더 및 txt파일 생성하기 file 졸리운_곰 2016.05.01 171
30 wifi 연결시 알림 android source 졸리운_곰 2016.05.01 250
29 How to use Broadcast Receiver in Android – Send and Receive SMS file 졸리운_곰 2016.05.01 292
28 [Android] Layout XML - layout_weight file 졸리운_곰 2016.04.30 23630
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED