네이버의 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>
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 630 | 19년 전 | 2349 | ||
| 629 |
|
19년 전 | 2011 | |
| 628 |
|
19년 전 | 3126 | |
| 627 |
|
19년 전 | 2033 | |
| 626 |
|
19년 전 | 2066 | |
| 625 |
|
19년 전 | 1719 | |
| 624 |
|
19년 전 | 2223 | |
| 623 | 19년 전 | 2199 | ||
| 622 |
|
19년 전 | 2508 | |
| 621 |
|
19년 전 | 2910 | |
| 620 |
|
19년 전 | 2404 | |
| 619 | 19년 전 | 2472 | ||
| 618 | 19년 전 | 3515 | ||
| 617 |
|
19년 전 | 3233 | |
| 616 |
|
19년 전 | 3222 | |
| 615 |
|
19년 전 | 3038 | |
| 614 |
|
19년 전 | 2045 | |
| 613 |
|
19년 전 | 2378 | |
| 612 |
|
19년 전 | 2239 | |
| 611 |
|
19년 전 | 2085 | |
| 610 |
|
19년 전 | 2520 | |
| 609 |
|
19년 전 | 2421 | |
| 608 |
|
19년 전 | 2813 | |
| 607 | 19년 전 | 2194 | ||
| 606 | 19년 전 | 3531 | ||
| 605 | 19년 전 | 1989 | ||
| 604 | 19년 전 | 2600 | ||
| 603 | 19년 전 | 1612 | ||
| 602 |
|
19년 전 | 2836 | |
| 601 | 19년 전 | 3074 | ||
| 600 |
|
19년 전 | 2153 | |
| 599 | 19년 전 | 2002 | ||
| 598 | 19년 전 | 2481 | ||
| 597 | 19년 전 | 2389 | ||
| 596 |
|
19년 전 | 3075 | |
| 595 |
|
19년 전 | 6753 | |
| 594 | 19년 전 | 2709 | ||
| 593 | 19년 전 | 3186 | ||
| 592 |
|
19년 전 | 3090 | |
| 591 |
|
19년 전 | 1931 | |
| 590 | 19년 전 | 3366 | ||
| 589 | 19년 전 | 2209 | ||
| 588 |
|
19년 전 | 2707 | |
| 587 | 19년 전 | 2345 | ||
| 586 |
|
19년 전 | 4364 | |
| 585 | 19년 전 | 2487 | ||
| 584 | 19년 전 | 2759 | ||
| 583 |
|
19년 전 | 3522 | |
| 582 |
|
19년 전 | 3718 | |
| 581 |
|
19년 전 | 3256 | |
| 580 | 19년 전 | 2485 | ||
| 579 | 19년 전 | 3074 | ||
| 578 | 19년 전 | 3974 | ||
| 577 | 19년 전 | 3814 | ||
| 576 | 19년 전 | 1751 | ||
| 575 |
|
19년 전 | 2208 | |
| 574 |
|
19년 전 | 5403 | |
| 573 | 19년 전 | 6717 | ||
| 572 | 19년 전 | 2565 | ||
| 571 | 19년 전 | 2106 | ||
| 570 | 19년 전 | 2601 | ||
| 569 | 19년 전 | 3301 | ||
| 568 | 19년 전 | 3528 | ||
| 567 | 19년 전 | 2981 | ||
| 566 | 19년 전 | 2602 | ||
| 565 |
|
19년 전 | 4719 | |
| 564 |
|
19년 전 | 6728 | |
| 563 |
|
19년 전 | 5008 | |
| 562 |
|
19년 전 | 5950 | |
| 561 |
|
19년 전 | 2692 | |
| 560 |
|
19년 전 | 2539 | |
| 559 |
|
19년 전 | 2222 | |
| 558 |
|
19년 전 | 2302 | |
| 557 | 19년 전 | 4595 | ||
| 556 |
|
19년 전 | 4668 | |
| 555 | 19년 전 | 2507 | ||
| 554 | 19년 전 | 2175 | ||
| 553 | 19년 전 | 2525 | ||
| 552 |
|
19년 전 | 3167 | |
| 551 | 19년 전 | 2938 | ||
| 550 |
|
19년 전 | 1898 | |
| 549 |
|
19년 전 | 1957 | |
| 548 |
|
19년 전 | 3146 | |
| 547 |
|
19년 전 | 2357 | |
| 546 |
|
19년 전 | 3617 | |
| 545 |
|
19년 전 | 2547 | |
| 544 |
|
19년 전 | 1850 | |
| 543 |
|
19년 전 | 2454 | |
| 542 |
|
19년 전 | 1729 | |
| 541 |
|
19년 전 | 1408 | |
| 540 |
|
19년 전 | 1536 | |
| 539 |
|
19년 전 | 1804 | |
| 538 |
|
19년 전 | 1584 | |
| 537 |
|
19년 전 | 1780 | |
| 536 |
|
19년 전 | 1561 | |
| 535 |
|
19년 전 | 1960 | |
| 534 |
|
19년 전 | 1845 | |
| 533 |
|
19년 전 | 1448 | |
| 532 |
|
19년 전 | 1442 | |
| 531 |
|
19년 전 | 1357 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기