네이버의 openapi에서 키를 받으셔야 사용할수 있습니다.
궁금한 점은 http://openapi.naver.com/15.html 이곳에서 확인하세요.
결과가 간단하므로 복잡하게 처리하지 않고 간단하게 처리햇습니다.
php에서 fopen()을 지원하는 환경에서만 가능합니다.
파일저장을 UTF-8 로 하여야만 에러가 나지 않습니다.
이하 소스
-----------------------------------------------------------------------------------------------------------
<?php
$q = (!empty($_GET['q'])) ? $_GET['q'] : '';
$q_decode = (!empty($q)) ? stripslashes(urldecode($q)) : '';
$q_enocde = urlencode($q);
$start = (!empty($_GET['start']) && is_numeric($_GET['start'])) ? $_GET['start'] : 1;
$display = (!empty($_GET['display']) && is_numeric($_GET['display'])) ? $_GET['display'] : 5;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title> 쇼핑 검색 </title>
</head>
<body>
<center>
<form method='GET'>
<input type=text name='q' value='<?=$q_decode?>'> <input type='submit' value='search'>
start <input type=text name='start' value='<?=$start?>' size=3>
display <input type=text name='display' value='<?=$display?>' size=3>
</form>
<table width=600 border=1 cellspacing=3>
<?php
if (!empty($q_decode)) {
$naver_openapi_key = '자신이 네이버에서 발급받은 키를 넣으세요';
$file = 'http://openapi.naver.com/search?key=' . $naver_openapi_key . '&query=' . $q_enocde . '&display=' . $display . '&start=' . $start . '&target=shop&sort=sim';
$fp = fopen($file, 'r') or die($file . ' not found');
$text = '';
while($data = fread($fp, 4096)){
$text .= $data;
}
fclose($fp);
preg_match_all("`<item>[^<]*<title>([^<]*)</title>[^<]*<link>([^<]*)</link>[^<]*(<image>([^<]*)</image>)?(<image/>)?[^<]*(<lprice>([^<]*)</lprice>)?(<lprice/>)?[^<]*(<hprice>([^<]*)</hprice>)?(<hprice/>)?[^<]*(<description>([^<]*)</description>)?(<description/>)?`s", $text, $matches);
if (is_array($matches[1]) && count($matches[1]) > 0){
foreach($matches[1] as $key => $val){
//title
$title = str_replace(array("<", ">"), array("<", ">"), $val);
//link
$link = $matches[2][$key];
//image
if (empty($matches[4][$key])) $image = '정보없음';
else $image = "<img src='" . $matches[4][$key] . "'>";
//lprice
if (empty($matches[7][$key])) $lprice = '정보없음';
else $lprice = number_format($matches[7][$key]) . " 원";
//hprice
if (empty($matches[10][$key])) $hprice = '정보없음';
else $hprice = number_format($matches[10][$key]) . " 원";
//description
if (empty($matches[13][$key])) $description = '정보없음';
else $description = str_replace(array("<", ">"), array("<", ">"), $matches[13][$key]);
echo "<tr align='center'>";
echo "<td width='100'> <a href='" . $link . "' target='_blank'>" . $title . "</a> </td>";
echo "<td width='180'>" . $image . "</td>";
echo "<td width='100'>" . $lprice . "<br>" . $hprice . "</td>";
echo "<td>" . $description . "</td>";
echo "</tr>";
}
}
else echo "<tr><td>검색결과 없음</td></tr>";
}
else echo "<tr><td>검색어를 입력하세요</td></tr>";
?>
</table>
<br><a href='http://openapi.naver.com/' target='_blank'>네이버 OPENAPI 사용</a>
</center>
</body>
</html>
-----------------------------------------------------------------------------------------------------------
utf-8 환경에서만 사용가능합니다.
데모로 걸은 링크 사이트는 며칠후에는 안보일수 있습니다
http://search.dyd.cc/shop.php?q=%EA%B0%80%EC%A0%84&start=1&display=5<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
궁금한 점은 http://openapi.naver.com/15.html 이곳에서 확인하세요.
결과가 간단하므로 복잡하게 처리하지 않고 간단하게 처리햇습니다.
php에서 fopen()을 지원하는 환경에서만 가능합니다.
파일저장을 UTF-8 로 하여야만 에러가 나지 않습니다.
이하 소스
-----------------------------------------------------------------------------------------------------------
<?php
$q = (!empty($_GET['q'])) ? $_GET['q'] : '';
$q_decode = (!empty($q)) ? stripslashes(urldecode($q)) : '';
$q_enocde = urlencode($q);
$start = (!empty($_GET['start']) && is_numeric($_GET['start'])) ? $_GET['start'] : 1;
$display = (!empty($_GET['display']) && is_numeric($_GET['display'])) ? $_GET['display'] : 5;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title> 쇼핑 검색 </title>
</head>
<body>
<center>
<form method='GET'>
<input type=text name='q' value='<?=$q_decode?>'> <input type='submit' value='search'>
start <input type=text name='start' value='<?=$start?>' size=3>
display <input type=text name='display' value='<?=$display?>' size=3>
</form>
<table width=600 border=1 cellspacing=3>
<?php
if (!empty($q_decode)) {
$naver_openapi_key = '자신이 네이버에서 발급받은 키를 넣으세요';
$file = 'http://openapi.naver.com/search?key=' . $naver_openapi_key . '&query=' . $q_enocde . '&display=' . $display . '&start=' . $start . '&target=shop&sort=sim';
$fp = fopen($file, 'r') or die($file . ' not found');
$text = '';
while($data = fread($fp, 4096)){
$text .= $data;
}
fclose($fp);
preg_match_all("`<item>[^<]*<title>([^<]*)</title>[^<]*<link>([^<]*)</link>[^<]*(<image>([^<]*)</image>)?(<image/>)?[^<]*(<lprice>([^<]*)</lprice>)?(<lprice/>)?[^<]*(<hprice>([^<]*)</hprice>)?(<hprice/>)?[^<]*(<description>([^<]*)</description>)?(<description/>)?`s", $text, $matches);
if (is_array($matches[1]) && count($matches[1]) > 0){
foreach($matches[1] as $key => $val){
//title
$title = str_replace(array("<", ">"), array("<", ">"), $val);
//link
$link = $matches[2][$key];
//image
if (empty($matches[4][$key])) $image = '정보없음';
else $image = "<img src='" . $matches[4][$key] . "'>";
//lprice
if (empty($matches[7][$key])) $lprice = '정보없음';
else $lprice = number_format($matches[7][$key]) . " 원";
//hprice
if (empty($matches[10][$key])) $hprice = '정보없음';
else $hprice = number_format($matches[10][$key]) . " 원";
//description
if (empty($matches[13][$key])) $description = '정보없음';
else $description = str_replace(array("<", ">"), array("<", ">"), $matches[13][$key]);
echo "<tr align='center'>";
echo "<td width='100'> <a href='" . $link . "' target='_blank'>" . $title . "</a> </td>";
echo "<td width='180'>" . $image . "</td>";
echo "<td width='100'>" . $lprice . "<br>" . $hprice . "</td>";
echo "<td>" . $description . "</td>";
echo "</tr>";
}
}
else echo "<tr><td>검색결과 없음</td></tr>";
}
else echo "<tr><td>검색어를 입력하세요</td></tr>";
?>
</table>
<br><a href='http://openapi.naver.com/' target='_blank'>네이버 OPENAPI 사용</a>
</center>
</body>
</html>
-----------------------------------------------------------------------------------------------------------
utf-8 환경에서만 사용가능합니다.
데모로 걸은 링크 사이트는 며칠후에는 안보일수 있습니다
http://search.dyd.cc/shop.php?q=%EA%B0%80%EC%A0%84&start=1&display=5<div class='small'>[이 게시물은 관리자님에 의해 2011-10-31 17:12:10 PHP & HTML에서 이동 됨]</div>
댓글 2개
19년 전
감사합니다.^^
19년 전
조금 더 보강합니다.
네이버에서 리턴되는 링크가 지식쇼핑으로만 되어있어서
가격비교대상이 없는 상품은 내용이 없는 페이지가 나오게 됩니다.
그래서 그럴때는 상품 정보 페이지가 보이도록 수정하였습니다.
이하 소스입니다.
------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
$q = (!empty($_GET['q'])) ? $_GET['q'] : '';
$q_decode = (!empty($q)) ? stripslashes(urldecode($q)) : '';
$q_enocde = urlencode($q);
$start = (!empty($_GET['start']) && is_numeric($_GET['start'])) ? $_GET['start'] : 1;
$display = (!empty($_GET['display']) && is_numeric($_GET['display'])) ? $_GET['display'] : 5;
$sort = (!empty($_GET['sort'])) ? $_GET['sort'] : 'sim';
$temp = $sort . "_selected";
$$temp = " selected";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title> 쇼핑 검색 </title>
</head>
<body>
<center>
<form name='shop_search_form' method='GET'>
<input type=text name='q' value='<?=$q_decode?>'> <input type='submit' value='search'>
start <input type=text name='start' value='<?=$start?>' size=3>
display <input type=text name='display' value='<?=$display?>' size=3>
sort
<select name='sort' onchange='document.shop_search_form.submit();'>
<option value='sim' <?=$sim_selected?>>인기상품순</option>
<option value='date' <?=$date_selected?>>신상품순</option>
<option value='asc' <?=$asc_selected?>>낮은가격순</option>
<option value='dsc' <?=$dsc_selected?>>높은가격순</option>
</select>
</form>
<table width=600 border=1 cellspacing=3>
<?php
if (!empty($q_decode)) {
$naver_openapi_key = '자신이 네이버에서 발급받은 키를 넣으세요';
$file = 'http://openapi.naver.com/search?key=' . $naver_openapi_key . '&query=' . $q_enocde . '&display=' . $display . '&start=' . $start . '&target=shop&sort=' . $sort;
$fp = fopen($file, 'r') or die($file . ' not found');
$text = '';
while($data = fread($fp, 4096)){
$text .= $data;
}
fclose($fp);
preg_match_all("`<item>[^<]*<title>([^<]*)</title>[^<]*<link>([^<]*)</link>[^<]*(<image>([^<]*)</image>)?(<image/>)?[^<]*(<lprice>([^<]*)</lprice>)?(<lprice/>)?[^<]*(<hprice>([^<]*)</hprice>)?(<hprice/>)?[^<]*(<description>([^<]*)</description>)?(<description/>)?`s", $text, $matches);
if (is_array($matches[1]) && count($matches[1]) > 0){
foreach($matches[1] as $key => $val){
//title
$title = str_replace(array("<", ">"), array("<", ">"), $val);
//link
$link = $matches[2][$key];
//image
if (empty($matches[4][$key])) $image = '정보없음';
else $image = "<img src='" . $matches[4][$key] . "'>";
//lprice
if (empty($matches[7][$key])) $lprice = '정보없음';
else $lprice = number_format($matches[7][$key]) . " 원";
//hprice
if (empty($matches[10][$key])) $hprice = '정보없음';
else $hprice = number_format($matches[10][$key]) . " 원";
//description
if (empty($matches[13][$key])) {
$description = '정보없음';
if ($hprice == '정보없음') {
if ($lprice == '정보없음') {// 가격 정보가 아예 하나도 없는 것은 도서검색인것 같음
$link = preg_replace("|^.+nv_mid=([0-9]+).*$|", "http://book.naver.com/bookdb/book_detail.php?bid=\\1", $link);
}
else {//가격비교 정보가 없는것들
$link = preg_replace("|^.+\?(.+)$|", "http://shopping.naver.com/go.nhn?\\1&refer=search", $link);
}
}
}
else $description = str_replace(array("<", ">"), array("<", ">"), $matches[13][$key]);
echo "<tr align='center'>";
echo "<td width='100'> <a href='" . $link . "' target='_blank'>" . $title . "</a> </td>";
echo "<td width='180'>" . $image . "</td>";
echo "<td width='100'>" . $lprice . "<br>" . $hprice . "</td>";
echo "<td>" . $description . "</td>";
echo "</tr>";
}
}
else echo "<tr><td>검색결과 없음</td></tr>";
}
else echo "<tr><td>검색어를 입력하세요</td></tr>";
?>
</table>
<br><a href='http://openapi.naver.com/' target='_blank'>네이버 OPENAPI 사용</a>
</center>
</body>
</html>
네이버에서 리턴되는 링크가 지식쇼핑으로만 되어있어서
가격비교대상이 없는 상품은 내용이 없는 페이지가 나오게 됩니다.
그래서 그럴때는 상품 정보 페이지가 보이도록 수정하였습니다.
이하 소스입니다.
------------------------------------------------------------------------------------------------------------------------------------------------------
<?php
$q = (!empty($_GET['q'])) ? $_GET['q'] : '';
$q_decode = (!empty($q)) ? stripslashes(urldecode($q)) : '';
$q_enocde = urlencode($q);
$start = (!empty($_GET['start']) && is_numeric($_GET['start'])) ? $_GET['start'] : 1;
$display = (!empty($_GET['display']) && is_numeric($_GET['display'])) ? $_GET['display'] : 5;
$sort = (!empty($_GET['sort'])) ? $_GET['sort'] : 'sim';
$temp = $sort . "_selected";
$$temp = " selected";
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=UTF-8'>
<title> 쇼핑 검색 </title>
</head>
<body>
<center>
<form name='shop_search_form' method='GET'>
<input type=text name='q' value='<?=$q_decode?>'> <input type='submit' value='search'>
start <input type=text name='start' value='<?=$start?>' size=3>
display <input type=text name='display' value='<?=$display?>' size=3>
sort
<select name='sort' onchange='document.shop_search_form.submit();'>
<option value='sim' <?=$sim_selected?>>인기상품순</option>
<option value='date' <?=$date_selected?>>신상품순</option>
<option value='asc' <?=$asc_selected?>>낮은가격순</option>
<option value='dsc' <?=$dsc_selected?>>높은가격순</option>
</select>
</form>
<table width=600 border=1 cellspacing=3>
<?php
if (!empty($q_decode)) {
$naver_openapi_key = '자신이 네이버에서 발급받은 키를 넣으세요';
$file = 'http://openapi.naver.com/search?key=' . $naver_openapi_key . '&query=' . $q_enocde . '&display=' . $display . '&start=' . $start . '&target=shop&sort=' . $sort;
$fp = fopen($file, 'r') or die($file . ' not found');
$text = '';
while($data = fread($fp, 4096)){
$text .= $data;
}
fclose($fp);
preg_match_all("`<item>[^<]*<title>([^<]*)</title>[^<]*<link>([^<]*)</link>[^<]*(<image>([^<]*)</image>)?(<image/>)?[^<]*(<lprice>([^<]*)</lprice>)?(<lprice/>)?[^<]*(<hprice>([^<]*)</hprice>)?(<hprice/>)?[^<]*(<description>([^<]*)</description>)?(<description/>)?`s", $text, $matches);
if (is_array($matches[1]) && count($matches[1]) > 0){
foreach($matches[1] as $key => $val){
//title
$title = str_replace(array("<", ">"), array("<", ">"), $val);
//link
$link = $matches[2][$key];
//image
if (empty($matches[4][$key])) $image = '정보없음';
else $image = "<img src='" . $matches[4][$key] . "'>";
//lprice
if (empty($matches[7][$key])) $lprice = '정보없음';
else $lprice = number_format($matches[7][$key]) . " 원";
//hprice
if (empty($matches[10][$key])) $hprice = '정보없음';
else $hprice = number_format($matches[10][$key]) . " 원";
//description
if (empty($matches[13][$key])) {
$description = '정보없음';
if ($hprice == '정보없음') {
if ($lprice == '정보없음') {// 가격 정보가 아예 하나도 없는 것은 도서검색인것 같음
$link = preg_replace("|^.+nv_mid=([0-9]+).*$|", "http://book.naver.com/bookdb/book_detail.php?bid=\\1", $link);
}
else {//가격비교 정보가 없는것들
$link = preg_replace("|^.+\?(.+)$|", "http://shopping.naver.com/go.nhn?\\1&refer=search", $link);
}
}
}
else $description = str_replace(array("<", ">"), array("<", ">"), $matches[13][$key]);
echo "<tr align='center'>";
echo "<td width='100'> <a href='" . $link . "' target='_blank'>" . $title . "</a> </td>";
echo "<td width='180'>" . $image . "</td>";
echo "<td width='100'>" . $lprice . "<br>" . $hprice . "</td>";
echo "<td>" . $description . "</td>";
echo "</tr>";
}
}
else echo "<tr><td>검색결과 없음</td></tr>";
}
else echo "<tr><td>검색어를 입력하세요</td></tr>";
?>
</table>
<br><a href='http://openapi.naver.com/' target='_blank'>네이버 OPENAPI 사용</a>
</center>
</body>
</html>
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 7830 | 9년 전 | 378 | ||
| 7829 |
|
9년 전 | 557 | |
| 7828 | 9년 전 | 491 | ||
| 7827 | 9년 전 | 375 | ||
| 7826 | 9년 전 | 383 | ||
| 7825 | 9년 전 | 437 | ||
| 7824 | 9년 전 | 417 | ||
| 7823 | 9년 전 | 324 | ||
| 7822 | 9년 전 | 321 | ||
| 7821 | 9년 전 | 264 | ||
| 7820 | 9년 전 | 321 | ||
| 7819 |
|
9년 전 | 724 | |
| 7818 | 10년 전 | 337 | ||
| 7817 | 10년 전 | 459 | ||
| 7816 | 10년 전 | 360 | ||
| 7815 | 10년 전 | 565 | ||
| 7814 | 10년 전 | 392 | ||
| 7813 | 10년 전 | 336 | ||
| 7812 | 10년 전 | 347 | ||
| 7811 | 10년 전 | 363 | ||
| 7810 | 10년 전 | 497 | ||
| 7809 | 10년 전 | 438 | ||
| 7808 | 10년 전 | 307 | ||
| 7807 | 10년 전 | 362 | ||
| 7806 |
프로그래머7
|
10년 전 | 1309 | |
| 7805 | 10년 전 | 1229 | ||
| 7804 |
zahir1312
|
10년 전 | 747 | |
| 7803 |
|
10년 전 | 1347 | |
| 7802 | 10년 전 | 406 | ||
| 7801 | 10년 전 | 833 | ||
| 7800 | 10년 전 | 1057 | ||
| 7799 | 10년 전 | 508 | ||
| 7798 | 10년 전 | 460 | ||
| 7797 | 10년 전 | 456 | ||
| 7796 | 10년 전 | 304 | ||
| 7795 | 10년 전 | 457 | ||
| 7794 | 10년 전 | 483 | ||
| 7793 | 10년 전 | 1003 | ||
| 7792 | 10년 전 | 410 | ||
| 7791 | 10년 전 | 493 | ||
| 7790 | 10년 전 | 458 | ||
| 7789 |
fbastore
|
10년 전 | 1405 | |
| 7788 | 10년 전 | 492 | ||
| 7787 | 10년 전 | 357 | ||
| 7786 | 10년 전 | 509 | ||
| 7785 | 10년 전 | 528 | ||
| 7784 | 10년 전 | 595 | ||
| 7783 | 10년 전 | 396 | ||
| 7782 | 10년 전 | 449 | ||
| 7781 | 10년 전 | 858 | ||
| 7780 | 10년 전 | 781 | ||
| 7779 | 10년 전 | 751 | ||
| 7778 | 10년 전 | 317 | ||
| 7777 | 10년 전 | 404 | ||
| 7776 | 10년 전 | 409 | ||
| 7775 | 10년 전 | 344 | ||
| 7774 | 10년 전 | 602 | ||
| 7773 | 10년 전 | 328 | ||
| 7772 | 10년 전 | 671 | ||
| 7771 | 10년 전 | 330 | ||
| 7770 | 10년 전 | 615 | ||
| 7769 | 10년 전 | 333 | ||
| 7768 | 10년 전 | 549 | ||
| 7767 | 10년 전 | 1119 | ||
| 7766 | 10년 전 | 444 | ||
| 7765 | 10년 전 | 481 | ||
| 7764 |
잘살아보자
|
10년 전 | 328 | |
| 7763 |
|
10년 전 | 1403 | |
| 7762 |
Tosea
|
10년 전 | 1022 | |
| 7761 | 10년 전 | 614 | ||
| 7760 |
잘살아보자
|
10년 전 | 608 | |
| 7759 |
잘살아보자
|
10년 전 | 427 | |
| 7758 |
잘살아보자
|
10년 전 | 538 | |
| 7757 | 10년 전 | 1186 | ||
| 7756 |
ITBANK
|
10년 전 | 1218 | |
| 7755 | 10년 전 | 1898 | ||
| 7754 | 10년 전 | 1004 | ||
| 7753 | 10년 전 | 846 | ||
| 7752 | 10년 전 | 1349 | ||
| 7751 |
잘살아보자
|
10년 전 | 477 | |
| 7750 |
잘살아보자
|
10년 전 | 442 | |
| 7749 |
잘살아보자
|
10년 전 | 443 | |
| 7748 |
잘살아보자
|
10년 전 | 424 | |
| 7747 |
잘살아보자
|
10년 전 | 515 | |
| 7746 |
잘살아보자
|
10년 전 | 637 | |
| 7745 |
잘살아보자
|
10년 전 | 879 | |
| 7744 |
잘살아보자
|
10년 전 | 392 | |
| 7743 | 10년 전 | 912 | ||
| 7742 |
starbros
|
10년 전 | 788 | |
| 7741 |
잘살아보자
|
10년 전 | 614 | |
| 7740 |
잘살아보자
|
10년 전 | 479 | |
| 7739 |
잘살아보자
|
10년 전 | 438 | |
| 7738 |
잘살아보자
|
10년 전 | 493 | |
| 7737 |
잘살아보자
|
10년 전 | 451 | |
| 7736 |
잘살아보자
|
10년 전 | 472 | |
| 7735 |
잘살아보자
|
10년 전 | 805 | |
| 7734 |
잘살아보자
|
10년 전 | 402 | |
| 7733 |
잘살아보자
|
10년 전 | 499 | |
| 7732 |
잘살아보자
|
10년 전 | 653 | |
| 7731 |
잘살아보자
|
10년 전 | 581 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기