안드로이드 HTML 파싱하기
JSoup을 사용해서 하면 간단하게 사용할 수 있다.
자바에서도 위에 사용하는 소스를 통해서 이요할 수 있지만, 안드로이드를 통해서 사용할 것이기 때문에 Gradle 을 통해 설치를 해 보겠다.
gradle 의 build.gradle (Module: app)
에 아래와 같은 문구를 추가합니다.
// jsoup HTML parser library @ https://jsoup.org/
compile 'org.jsoup:jsoup:1.10.3'
그리고 Gradle Sync Now
를 눌러주는 것을 잊으면 안됩니다. 그래야 적용이 됩니다.
- 주의할점
- 메인화면에서 네트워크 연결을 사용하면 에러가 납니다. 메인에서 네트워크 연결을 바로 시도 하면 에러가 납니다. 이 때문에 하루를 날려 버렸습니다.
여러 예제를 보면 다들 AsyncTask
를 통해서 이용하고 있습니다. 사용법도 간단하고, 예제도 있지 때문에 저도 같은 방법을 사용할 것입니다.
class MainActivity 아래에
다음과 같은 코드를 추가 합니다.
private class MainPageTask extends AsyncTask<Void,Void,Void> {
private Elements element;
@Override
protected void onPostExecute(Void result) {
//doInBackground 작업이 끝나고 난뒤의 작업
mainHello.setText(element.text());
}
@Override
protected Void doInBackground(Void... params) {
//백그라운드 작업이 진행되는 곳.
try {
Document doc = Jsoup.connect("http://example.com").get();
element = doc.select("#algoList > tbody");
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
사이트 example.com
를 파싱하려고 합니다.
doInBackground
에서 작업을 하고 onPostExcute
에서 결과가 끝나고 난 뒤의 작업을 수행합니다.
doInBackground
에서 작업을 처리하려고 하면 오류가 납니다. 다른 메소드에 입력 하시는 것을 잊으면 안됩니다.
반응형
'개발 > 안드로이드' 카테고리의 다른 글
마시멜로우 API 23 이상에서 권한 체크와 권한 요청하기 (0) | 2017.07.07 |
---|