Tip & Tech

활용팁

홈 > 회원포럼 > 활용팁
활용팁

네이버쇼핑 정보 가져오기~

4 채군아 24 1234 3 0

안녕하세요? 네이버검색 API 를 이용한 "쇼핑"정보를 가져오는 방법 입니다


f87dd93860203afbd7098b819870e63b_1516873939_3932.gif 



네이버검색 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번 이런식으로 순위 적용.


제가 못다한 기능을 혹시 구현해 주실분 있으시면

복 받으실꺼에요~


홈페이지지에 잘 이용하면 여러므로 쓸모가 있을꺼 같아 부족한 실력이지만

공유해 드립니다~~

 

24 Comments
8 카카롯 01.26 09:30  
저는 해당 라인을

$xmlstring = $naverproxy -> queryNaver($_POST['aa'], "shop");

이렇게 고쳐서 해결했습니다.

혹시 비슷한 문제가 생기는 분들은 라인을 저렇게 고치면 될 것 같네요.
4 채군아 01.26 10:02  
좋은 정보 감사합니다~~^.^
17 한별님짱 01.28 12:27  
아미나에 적용할려면 어케해야되나영
4 채군아 01.29 20:41  
<?php
include_once('./_common.php');
define('_INDEX_', true);

if(!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

include_once('./_head.php');

include_once('k/002.php');

include_once('./_tail.php');
?>

저는 이렇게 하일하나 만들고~
    <?php
include_once('n00.php');
?>

이렇게 만들어진 파일을 테마에서 호출하여 사용하고 있습니다~~~
17 한별님짱 01.30 00:05  
적용하고싶은데영 할줄을 몰라성 ㅜㅜㅜ
17 한별님짱 01.30 00:19  
스킨으로 회원자료실에 올려주실분엇으시나용

Congratulation! You win the 50 Lucky Point!

3 perzle 02.11 19:45  
적용하고 싶은데 보고만 갑니다 ㅡ,.ㅡ
5 피의전설 02.19 21:47  
구현해보고 싶은 내용이였는대 좋은 팁 감사합니다. 다른 사이트에서 보고 한번 해보고 싶었는대 여기 있었네요.

본문 글에 올려진 코드 말고 댓글에 올려주신 코드 쓰세요.
글에 올려진 소스코드는 링크에 다른게 붙어서 안되실거예요.
1 오키엠 03.26 10:41  
초보라 적용하고 싶은데 잘 못하겠네요 ㅠㅠ
제목
최근 글
최근 댓글
Facebook Twitter GooglePlus KakaoStory NaverBand