네이버쇼핑 정보 가져오기~
채군아
24
865
3
0
01.25 00:20
안녕하세요? 네이버검색 API 를 이용한 "쇼핑"정보를 가져오는 방법 입니다
네이버검색 API 관련 자료를 찾다가 구글에서 발견한
소스를 이용하여 약간 수정해 보았습니다~
원본: https://blog.naver.com/kujira1/220816428513
우선 2개의 파일이 필요합니다.
01.php ( 검색 )
02.php ( 결과 )
파일명: 01.php
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> <meta charset="UTF-8"> <div class="container" > <div class="row" style="padding:20px;"> <div class="panel panel-default"> <div class="panel-heading"><h3><b>네이버쇼핑 검색</b></h3></div> <div class="panel-body"> <form action="02.php" method="post"> <div class="col-lg-6"> <div class="input-group"> <input type="text" class="form-control" type="text" name="aa" required placeholder="상품이름"> <span class="input-group-btn"> <button type="submit" class="btn btn-default">검색</button> </span> </div> </div> </form> </div> </div> </div> </div>
파일명: 02.php
네이버 https://developers.naver.com/main/
에서
client_id
client_secret
준비 하세요.
<!-- 합쳐지고 최소화된 최신 CSS --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css"> <meta charset="UTF-8"> <script type="text/javascript"> function goBack(){ window.history.back(); } </script> <div class="container" > <div class="row" style="padding:20px;"> <button type="submit" class="btn btn-default" value="다시검색" onclick="goBack();" >다시검색</button> <p> <?php @header("Cache-Control:no-cache, must-revalidate"); @header("Content-Type: text/html; charset=utf-8"); class NaverProxy { public function queryNaver($query, $target) { $client_id = "발급받은 client_id"; $client_secret = "발급받은 client_secret"; $query=urlencode($_POST['aa']); $target="shop"; $url = "https://openapi.naver.com/v1/search/shop.xml"; $url = sprintf("%s?query=%s&display=10&start=1&sort=sim&target=shop", $url, $query); $is_post = true; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); // curl_setopt($ch, CURLOPT_GET, $is_post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $headers = array(); $headers[] = "X-Naver-Client-Id: ".$client_id; $headers[] = "X-Naver-Client-Secret: ".$client_secret; curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); $data = curl_exec ($ch); curl_close ($ch); return $data; } } $naverproxy = new NaverProxy(); // XML파일에서 원하는 항목만 추출하기 //echo $naverproxy -> queryNaver($_POST['query'], $_POST['target']); $xmlstring = $naverproxy -> queryNaver($_POST['query'], $_POST['target']); $xml = simplexml_load_string($xmlstring) or die("에러: 객체를 생성할 수 없습니다"); $items = $xml->channel->item; if(!empty($items)){ foreach($items as $item){ echo ' <div class="panel panel-default"> <div class="panel-heading"><h3><b><a href="' . $item->link . '" target="_blank">'. $item->title . ' </a></b></h3></div> <br> <div class="row"> <div class="col-md-4" style="text-align: center;"> <a href="' . $item->link . '" target="_blank"><img src='. $item->image . ' width="100px" height="100px" /></a></div> <div class="col-md-8"> <h4>쇼핑몰: <a href="' . $item->link . '">'.$item->mallName. '</a></h4> <!--<h4>아이디: '. $item->productId . '</h4>--> <h4>가격: '. $item->lprice. '원</h4> </div> </div> <br> </div> ' ; } } ?> <button type="submit" class="btn btn-default" value="다시검색" onclick="goBack();" >다시검색</button> </div> </div>
아직 실력이 부족하여 몇가지 기능을 구현 하지 못했습니다.....
1. 가격 출력 부분에 천원단위 "콤마" 적용.
2. 검색부분 ajax 적용.
3. 출력(상품)결과에 1번 2번 3번 이런식으로 순위 적용.
제가 못다한 기능을 혹시 구현해 주실분 있으시면
복 받으실꺼에요~
홈페이지지에 잘 이용하면 여러므로 쓸모가 있을꺼 같아 부족한 실력이지만
공유해 드립니다~~