스프링노트나 구글처럼 네이버에서도 웹 개발자를 위한 Open API를 제공합니다. 이 API를 이용하면 네이버의 검색 결과를 자신의 사이트에 출력할 수 있습니다. 이 Open API는 XML 형태로 제공되어 XML을 다룰 줄 알아야 합니다. XML로 제공되기 때문에 Ajax 적용도 아주 쉽습니다. 여기서는 네이버 Open API와 스킨을 활용한 검색 페이지를 만들어 보겠습니다.
네이버 Open API란?
개발자가 네이버의 다양한 Open API를 이용해, 작게는 운영 사이트의 다양한 서비스 활용을 지원하고, 넓게는 창조적이고 다양한 애플리케이션을 개발할 수 있도록 네이버 기술과 서비스를 공유하는 프로그램입니다.네이버 Open API을 이용하여 각종 검색결과와 지도 검색의 결과를 XML로 받아 처리하는 것이 가능합니다.
네이버 Open API 사용시 반드시 알아두어야 할 점들
1. 쿼리 제한이 있습니다.
하나의 유저(KEY)당 서비스별 하루(24시간) 5000 쿼리로 제한하고, 이를 초과할 경우 서비스가 중지될 수 있습니다.
단, 일일 제한량을 초과하는 활용은 네이버 Open API 제휴를 통해서 제공됩니다.
2. 절대 비상업적 용도로만 사용하셔야 합니다. 단, 상업적 용도의 활용은 Open API 제휴를 통해서 제공됩니다.
3. 네이버 OpenAPI를 사용하고 있음을 나타내 주셔야 합니다.
애플리케이션이 네이버 OpenAPI에 의거해 개발한 프로그램이나 서비스라는 것을 링크나, 네이버 로고를 통해 나타내 주셔야 합니다. 로고 사용에 있어서는 저희의 소정의 가이드라인을 준수해야 할 수 있습니다. 관련 문의 openapi@naver.com으로 부탁합니다.
로고 적용 가이드라인 보기
서비스 신청 (KEY 발급 받기)
네이버 OpenAPI를 사용하기 위해서는 서비스를 신청하여 사용자 KEY를 받아야합니다.1. 네이버 회원 가입 후 로그인을 합니다.
요즘은 네이버에 아이디 한 개쯤은 모두가 다 있겠죠? 먼저 네이버에 로그인을 합니다.
2. 네이버 OpenAPI 사이트로 이동합니다.
주소는 http://openapi.naver.com 입니다.
3. 초기 화면에서 API키 이용등록/수정을 선택합니다.

4. 개인 정보를 입력한 후 하단의 확인 버튼을 누릅니다. 지도 키 발급을 원하신다면 아래에서 정보 입력 후 지도 키 발급 버튼도 클릭하세요.
5. 자신이 발급 받은 KEY가 화면에 나옵니다. 이 KEY는 다시 볼 수 있으며, 지금 기억해 두세요. 어디에 복사해 주셔도 좋습니다. 여기서는 지식iN의 검색 결과를 얻어올 것이니, 지식iN 테스트 URL을 복사해 두세요. 나중에 다시 쓰입니다.

여기서는 지식iN 검색 결과를 가져올 것입니다. 다른 검색 결과는 네이버 OpenAPI 사이트에 자세히 설명이 되어 있습니다. 소스 작성은 크게 다르지 않으니 XML 정보만 알아두시면 됩니다.
소스 작성
이제 네이버 OpenAPI를 이용한 검색 결과를 가져오는 소스를 작성해 보도록 하겠습니다. 네이버 OpenAPI에서 검색 결과를 가져오는 방법은 모두 같기 때문에 여기서는 지식IN의 검색 결과를 가져와 보도록 하겠습니다.지식iN 검색의 샘플 URL은 다음과 같습니다.
http://openapi.naver.com/search?key=test&query=go&display=5&start=1&target=kin&sort=sim
key=test 부분에 test를 자신의 KEY로 바꾸시면 됩니다.
가장 먼저 검색어를 이용할 HTML 페이지를 만들어야 합니다. 다음은 검색어를 입력하는 HTML 페이지입니다.
UTF-8인코딩으로 작업해주세요.
이 파일의 다운로드는 이 포스트의 맨 아래에서 가능합니다.
<html>
<head>
<title>네이버 지식iN 검색</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<form action="./search.php" method="GET">
<input type="text" name="query" />
<input type="submit" value="검색" />
</form>
</body>
</html>
주의할 점
네이버 OpenAPI는 한글 UTF-8만 지원합니다. 한글 검색어 입력시 반드시 UTF-8 인코딩을 해주세요. 처음부터 파일 인코딩을 UTF-8로 만드시면 수고를 덜 수 있습니다.
이제 PHP 소스를 작성해 봅시다. UTF-8 인코딩으로 파일을 만들어주세요.
먼저 네이버 OpenAPI에 보낼 변수를 지정해야합니다. 아래와 같이 지정할 수 있습니다.
위의 변수를 이용하여 아래와 같이 쿼리문을 만들 수 있습니다.
$openapi_query = "key={$openapi_key}&query={$_GET['query']}&display={$openapi_display}&start={$openapi_start}&target={$openapi_target}&sort={$openapi_sort}";
이제 만들어진 쿼리문을 네이버 OpenAPI에 보내야합니다. 쿼리문을 보낸 후 결과 내용을 얻는 소스는 다음과 같습니다. (fsockopen() 함수의 사용법은 이 블로그의 포스트 또는 PHP 사이트를 참고하세요.)
위 소스에서 $openapi_body가 네이버 OpenAPI에서 받아온 결과 내용입니다. 이 변수를 활용하여 페이지를 구성하겠습니다. 이 변수의 내용은 XML입니다.
XML을 처리하기 위해 XML 파서가 필요합니다. 간단한 XML이므로 텍스트큐브에서 제공하는 XMLStruct 클래스를 약간 변형하여 사용하겠습니다. 클래스명은 SimpleXML입니다. 소스는 다음과 같습니다.
아래의 소스 보기 버튼을 클릭하시면 SimpleXML의 모든 소스가 나타납니다.
소스 보기
XML 분석후 결과 출력하기
SimpleXML 클래스를 사용하는 방법을 알아봅시다. 이 부분을 먼저 알아야 XML을 분석할 수 있습니다.먼저 다음과 같이 SimpleXML의 객체를 하나 생성합니다.
그리고 난 후, 아래와 같이 XML 내용을 넣어줍니다.
XML 구조를 읽는 방법은 SimpleXML의 struct 배열을 이용하면 됩니다. 이용 방법은 나중에 소스를 작성할 때 이해할 수 있을 것입니다.
여기서는 SKIN이라는 개념을 적용할 것입니다. 아주 간단한 것으로 아래의 클래스로 처리할 수 있습니다.
(Skin을 사용하면 검색 결과 출력 디자인을 사용자 맘대로 변경이 가능합니다. PHP를 건들지 않고도...)
위 SimpleSkin 클래스의 사용법은 간단히 설명해서 다음과 같습니다.
함수 SimpleSkin()는 인자로 스킨 파일의 경로를 필요로 합니다. 예) SimpleSkin('./skin.html');
함수 replace()는 스킨 내의 문자열을 해당 문자열로 바꾸어줍니다. 예) replace('[SKIN]','원하는 문자열');
함수 display()는 스킨 내용을 출력해 줍니다.
함수 getBlock()는 블록의 내용을 리턴한 후 해당 블록을 삭제합니다. 치환자가 반드시 필요합니다. 예) getBlock('block','[BLOCK']);
스킨 클래스를 생성하는 방법은 다음과 같습니다.
아래는 제가 직접 만든 아주 간단한 스킨입니다. 여러분이 직접 수정해서 사용하세요. 스킨 문자는 변경을 하면 안됩니다.
이제 마지막 부분만 남았네요. XML을 분석하는 것은 생각보다 아주 쉽습니다.
처음으로 제목을 출력해야 되겠죠? 다음과 같은 방법으로 스킨 치환자를 치환할 수 있습니다.
SimpleXML 클래스의 사용법은 추후 이해하실 수 있을 것입니다.
이제 결과를 출력할 차례입니다. 스킨에서는 [result]와 [/result] 사이에 있는 것들이 출력할 디자인입니다. 이 블록을 $block 변수에 저장을 한후 foreach를 이용하여 [RESULT]를 결과 내용으로 치환하면 끝입니다.
마지막으로 다음과 같이 출력을 합니다.
마지막
네이버 지식iN의 검색 결과를 OpenAPI를 이용하여 출력해 보았습니다.
여러분께서는 search.php 파일을 건드리지 않고도 스킨 파일인 skin.html 파일만을 수정하여 지식iN 검색 결과 디자인을 하실 수 있습니다. 이것이 프로그래밍과 디자인이 분리되었다고 하는 것이지요. 한번 디자인을 제대로 해보시는 것도 좋을 것입니다.
반드시 자신의 KEY를 입력하여 사용하세요!
아래는 search.php의 완성된 모든 소스입니다. 다운로드도 가능합니다.
search.php의 모든 소스 보기
다음 파일은 search.php와 search.html, skin.html을 포함한 압축 파일입니다.
개별 파일 다운로드
받은 트랙백이 없고,
댓글이 없습니다.
댓글+트랙백 RSS :: http://www.beneglo.com/rss/response/47
댓글+트랙백 ATOM :: http://www.beneglo.com/atom/response/47
댓글+트랙백 ATOM :: http://www.beneglo.com/atom/response/47

openapi.zip
search.php
search.html
댓글을 달아 주세요
댓글 RSS 주소 : http://www.beneglo.com/rss/comment/47댓글 ATOM 주소 : http://www.beneglo.com/atom/comment/47