오늘은 Naver에서 제공하는 검색 api를 사용해보자.


네이버는 다른 검색 엔진과는 다르게 XML 로만 결과를 제공해주고 있는것 같다, 개인적으로 JSON 사용하는 것을 좋아하는데, Naver에 실망했다 .ㅠ.ㅠ

모든 클래스를 다 똑같이 만들려고 했는데 ... XML파서를 넣어줘야 .....


아래 코드도 크게 다르지 않게 그대로 필요한 부분만 가져다 쓰면 되고, 쿼리 결과를 처리하는 부분이 xml파싱하는 부분이라서, 가장 간단한 방법으로 파싱했다.


http://dev.naver.com/openapi/ --> 네이버 api 사이트

http://dev.naver.com/openapi/apis/search/rank --> 검색 api만 사용하려면 여기로..


네이버도 api를 사용하기 위해서는 개발자의 api key를 발급받아야  한다.


검색 api등등을 사용할때는 사실 많은 공부가 필요하지 않은것 같다, 아래 샘플 코드를 가지고 가서 필요한 부분만 검색하기만 하면 되니까.




package com.hopeisagoodthing.searchtool;

import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;

import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;

import android.util.Log;


public class NaverSearch implements ISearch
{
	private static final String TAG = "NaverSearch";
	private static final String BASE_URL = "http://openapi.naver.com/search?";
	private static final String API_KEY="여기에 역시 자신의 api key를 넣어준다.";
	private static final String[] TARGETS = new String[]{"webkr","news","blog","cafearticle"};
	private static final int START = 1;
	private static final class PARAM{
		private static final String API_KEY = "key=";	// always start with this parameter!!!
		private static final String QUERY = "&query=";
		private static final String TARGET = "&target=";
		private static final String START = "&start=";
		private static final String DISPLAY = "&display=";
	}	
	
	private final List<String> mAnalyzedList = new ArrayList<String>();
	
	
	
	@Override
	public List<String> getAnalyze(final String query, final int resultSize, final IAnalyzer analyzer) {
		boolean inDesc = false;	
		String desc = null;
		mAnalyzedList.clear();
		
		for(String target : TARGETS)
		{
			URL url = null;
			try {
				url = new URL(	BASE_URL + 
									PARAM.API_KEY+API_KEY + 
									PARAM.QUERY + URLEncoder.encode(query, "UTF-8") +
									PARAM.TARGET+ target+
									PARAM.START+START+
									PARAM.DISPLAY+resultSize);
				
			} catch (MalformedURLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (UnsupportedEncodingException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}		
			
			try {			
				final XmlPullParserFactory parserCreator = XmlPullParserFactory.newInstance();
				final XmlPullParser parser = parserCreator.newPullParser();
				parser.setInput(url.openStream(), null);
				
				int parserEvent = parser.getEventType();
				
				Log.e(TAG,"NAVER Result START============================================================");
				while (parserEvent != XmlPullParser.END_DOCUMENT) {
					switch (parserEvent) {
					case XmlPullParser.START_TAG:
						if (parser.getName().equals("description")) {
							inDesc = true;
						}
						
						break;

					case XmlPullParser.TEXT:
						if (inDesc) {
							desc = parser.getText();
							inDesc = false;
							analyzer.analyze(desc, mAnalyzedList);
						}
						
						break;
					case XmlPullParser.END_TAG:				
						break;
					}
					try {
						parserEvent = parser.next();
					} catch (XmlPullParserException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					} catch (IOException e) {
						// TODO Auto-generated catch block
						e.printStackTrace();
					}
				}
				Log.e(TAG,"NAVER Result END============================================================");
			} catch (XmlPullParserException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		
		return mAnalyzedList;		
	}	
}
저작자 표시
신고
  1. ㄱㅈㅁ 2015.03.25 13:24 신고

    안녕하세요! 네이버 api를 가져와야 할 경우가 생겨서 위 코드를 따라해봤는데요! implements ISearch 부분과 final IAnalyzer analyzer 부분에서 오류가 나는데 이유가 뭔지 알수있을까요??ㅜㅜ

    • rekun,ekun 커뉴 2015.03.25 21:22 신고

      해당 부분은 사실 제가 따로 다른 프로젝트에 붙이기위한 interface를 구현부분으로, 실제 사용하실때는 각 메소드들 부분만 참고하시면 됩니다. 두부분은 제거하시고 사용하시면 됩니다.

+ Recent posts

티스토리 툴바