티스토리 뷰
Jsoup 을 이용한 영어 단어 정보 Parsing
이번에는 Android 에서 Jsoup 을 이용하여 다음 단어사전 Page를 Parsing 하여 단어의 정보들을 가져오는 방법에 대해서 알아보겠습니다.
일단 Jsoup을 사용하기 위해서는 gradle 에 다음과 같이 dependencies 를 줘야 합니다.
1 2 3 4 5 | dependencies { compile 'org.jsoup:jsoup:1.9.2' } | cs |
그럼 이제부터는 Jsoup 을 사용할수 있게 됩니다. 아래의 코드는 단어를 받아 단어의 뜻, 발음기호, 예문, 예문 해석, 발음 음성 파일을
Parsing 해오는 코드 입니다.
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 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | public class ParseDictionary { private Elements mean; private String[] example_arr; private String[] example_mean_arr; private Context mContext; public String word; public String pron; public String audioPath; public ParseDictionary(Context context) { mContext = context; } public boolean getParsingData(String data) { word = data.toLowerCase(); String url = "http://dic.daum.net/search.do?q=" + data + "&dic=eng&search_first=Y"; Document doc = null; try { doc = Jsoup.connect(url).get(); } catch (IOException e) { e.printStackTrace(); } if (doc != null) { //#mArticle > .search_cont > .card_word > .search_box > Element element = doc.select(".cleanword_type > .search_cleanword > .tit_cleansch > .txt_cleansch >span").first(); try { if (!word.equals(element.text().replaceAll(" ", ""))) { //정상적인 단어가 아닐 때 return false; } } catch (NullPointerException e) { return false; } mean = doc.select(".cleanword_type > .list_search > li > .txt_search"); //뜻 Parsing Element pronounce = doc.select(".cleanword_type > .wrap_listen > .desc_listen > .txt_pronounce").first(); //발음 Parsing if (pronounce != null) pron = pronounce.text(); Elements example = doc.select(".card_word > .cont_example > .list_example > li > .box_example > .txt_example > .txt_ex"); //예문 Parsing Elements example_mean = doc.select(".card_word > .cont_example > .list_example > li > .box_example > .mean_example > .txt_ex"); //예문 해석 Parsing if (example != null) { example_arr = new String[example.size()]; int cnt = 0; for (Element e : example) { example_arr[cnt++] = e.text(); } } if (example_mean != null) { example_mean_arr = new String[example_mean.size()]; int cnt = 0; for (Element e : example_mean) { example_mean_arr[cnt++] = e.text(); } } try { int count; Element title = doc.select(".cleanword_type > .wrap_listen > .desc_listen > a").first(); if (title != null) { audioPath = title.attr("href"); //발음 Parsing URL req = null; URLConnection connection = null; req = new URL(audioPath); connection = req.openConnection(); connection.connect(); int lengthOfFile = connection.getContentLength(); File audioForder = new File(mContext.getFilesDir() + "/audio/"); if (!audioForder.exists()) { audioForder.mkdir(); new File(audioForder.getPath() + ".nomedia"); } audioPath = audioForder.getPath() + "/" + data + ".mp3"; InputStream input = new BufferedInputStream(req.openStream()); OutputStream output = new FileOutputStream(audioPath); byte audio[] = new byte[1024]; long total = 0; while ((count = input.read(audio)) != -1) { total += count; output.write(audio, 0, count); } output.flush(); output.close(); input.close(); } } catch (Exception e) { e.printStackTrace(); } if (mean == null) { return false; } createJson(); insertDB(); return true; } return false; } } | cs |
반응형
'프로그래밍 > Android' 카테고리의 다른 글
[Android] 안드로이드 6.0 이상 Wifi Scanning 하여 Dialog 에 보여주기 (6) | 2016.11.29 |
---|---|
[Android] Action Bar Hide가 안될 때( getActionBar() 가 null 일 때) (0) | 2016.11.26 |
Android 앱을 처음 실행했을 때 Check 하기 (0) | 2016.11.25 |
Android Layout에 선 그리기 (Divider) (0) | 2016.11.17 |
Android Json Binder, Parser 구현 (0) | 2016.11.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- JavaFX Table View
- 배낭여행
- 일본 여행
- 텐트
- effectivejava
- 일본 배낭여행
- 일본여행
- 인텔리제이
- git
- 배낭 여행
- JavaFX 종료
- intelij
- 스프링부트
- JavaFX
- windows
- JavaFX 테이블뷰
- 이펙티브
- 자전거
- JavaFX Window Close
- TableView
- java
- Java UI
- 일본 자전거 여행
- 자전거 여행
- 방통대 과제물
- 이펙티브 자바
- springboot
- 자바
- 이펙티브자바
- effective java
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함