네이버 블로그 검색 API 를 사용할 일이 있어서 삽을 들었습니다.
처음에는 이미지 검색 API 를 사용하여 이미지를 뿌려주려했으나 원치않는 이미지들이 보여지기도 하고 그 퀄리티가 다소 낮은 문제가 있으며 결정적으로 네이버 자체에서 검색한 이미지의 결과와 오픈API 를 통해 검색된 이미지의 결과가 너무 달라 사용할 수가 없었습니다. (이건 제 문제일 수도 있고 네이버 오픈API 의 문제일 수도 있습니다.)
작업 과정은 이러했습니다.
이 객체가 파일 시스템에 직접 접근이 가능한지 확인하지 않았지만 안될 것 같았습니다. 그래서 다른 함수를 통해 네이버 오픈 API 사이트를 직접 접근하게 되었습니다.
사용하고 있는 호스팅 서버에서 외부 도메인으로 직접 fopen() 을 지원하였기 때문에 검색할 주소를 조합하여 RAW 데이터를 받았습니다.
참고로 CODEIGNITOR 프레임워크를 사용 중입니다.
콘텐트를 받은 변수를 xml 데이터로 처리하기 위해 SimpleXMLElement 객체를 생성하였습니다.
생성된 객체를 통해 필요한 데이터를 파싱하는 작업을 진행합니다.
로우 데이터를 살펴보니 channel 엘리먼트를 사용하는 것이 가장 적절하여 이 엘리먼트만 추출합니다.
추출된 내용을 뷰 페이지로 전달합니다.
뷰 페이지에서 값을 출력하기 위한 루프를 돕니다.
이 데이터를 불러오기 위한 호출 페이지 코드도 함께 달아 두었으니 참고하세요.
처음에는 이미지 검색 API 를 사용하여 이미지를 뿌려주려했으나 원치않는 이미지들이 보여지기도 하고 그 퀄리티가 다소 낮은 문제가 있으며 결정적으로 네이버 자체에서 검색한 이미지의 결과와 오픈API 를 통해 검색된 이미지의 결과가 너무 달라 사용할 수가 없었습니다. (이건 제 문제일 수도 있고 네이버 오픈API 의 문제일 수도 있습니다.)
작업 과정은 이러했습니다.
- 네이버 API 키 발급
- 크로스 도메인 문제로 XML 데이터를 바로 받을 수 없기에 PHP 에서 데이터 받음
- XML 객체로 전달
- 뷰 페이지 전달
- 루프
이 객체가 파일 시스템에 직접 접근이 가능한지 확인하지 않았지만 안될 것 같았습니다. 그래서 다른 함수를 통해 네이버 오픈 API 사이트를 직접 접근하게 되었습니다.
사용하고 있는 호스팅 서버에서 외부 도메인으로 직접 fopen() 을 지원하였기 때문에 검색할 주소를 조합하여 RAW 데이터를 받았습니다.
참고로 CODEIGNITOR 프레임워크를 사용 중입니다.
$query = $this->uri->segment(3,'');
// 네이버 검색 키
$key = '1111112222222222333333333344444444444;
$url = 'http://openapi.naver.com/search?key='.$key;
$url .= '&target=blog&display=4';
$url .= '&query='.$query;
$content = file_get_contents($url);
// 네이버 검색 키
$key = '1111112222222222333333333344444444444;
$url = 'http://openapi.naver.com/search?key='.$key;
$url .= '&target=blog&display=4';
$url .= '&query='.$query;
$content = file_get_contents($url);
콘텐트를 받은 변수를 xml 데이터로 처리하기 위해 SimpleXMLElement 객체를 생성하였습니다.
$reader = new SimpleXMLElement($content);
생성된 객체를 통해 필요한 데이터를 파싱하는 작업을 진행합니다.
로우 데이터를 살펴보니 channel 엘리먼트를 사용하는 것이 가장 적절하여 이 엘리먼트만 추출합니다.
$view_data['api_search'] = $reader->channel;
추출된 내용을 뷰 페이지로 전달합니다.
$this->load->view('/spot/api_search', $view_data);
뷰 페이지에서 값을 출력하기 위한 루프를 돕니다.
<p class="boardSubject">블로그 검색 결과 </p>
<? foreach($api_search->item as $list): ?>
<p><a href="<?= $list->link ?>" target='_blank'><?= $list->title ?></a></p>
<? endforeach; ?>
<? foreach($api_search->item as $list): ?>
<p><a href="<?= $list->link ?>" target='_blank'><?= $list->title ?></a></p>
<? endforeach; ?>
이 데이터를 불러오기 위한 호출 페이지 코드도 함께 달아 두었으니 참고하세요.
$(document).ready(function(){
var name = '<?= $spot_data['spot_title'] ?>';
$('#naverImg').load('/spot/naver_api_search/'+name);
});
var name = '<?= $spot_data['spot_title'] ?>';
$('#naverImg').load('/spot/naver_api_search/'+name);
});
'Development > Coding' 카테고리의 다른 글
유능한 C# 개발자가 착각하는 나쁜 자바스크립트 습관. Part 1 (0) | 2011.06.30 |
---|---|
자바스크립트 코딩할 때 실수 하기 쉬운 몇가지 (2) | 2011.06.17 |
placeholder 처리 (1) | 2011.03.14 |
jQuery 특정 요소만 ajax 로딩하고 싶은데... (0) | 2010.12.24 |
CSS 3 rotate 45deg 테스트 (0) | 2010.12.17 |