네이버의 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>
게시판 목록
프로그램
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 430 | 19년 전 | 4088 | ||
| 429 | 19년 전 | 3284 | ||
| 428 | 19년 전 | 4120 | ||
| 427 | 19년 전 | 3463 | ||
| 426 | 19년 전 | 3095 | ||
| 425 | 19년 전 | 3389 | ||
| 424 | 19년 전 | 2430 | ||
| 423 | 19년 전 | 2842 | ||
| 422 | 19년 전 | 2334 | ||
| 421 | 19년 전 | 3700 | ||
| 420 | 19년 전 | 4725 | ||
| 419 | 19년 전 | 3777 | ||
| 418 |
|
19년 전 | 1724 | |
| 417 | 19년 전 | 2731 | ||
| 416 | 19년 전 | 2380 | ||
| 415 | 19년 전 | 2600 | ||
| 414 | 19년 전 | 4396 | ||
| 413 |
|
19년 전 | 2578 | |
| 412 | 19년 전 | 3026 | ||
| 411 |
|
19년 전 | 2977 | |
| 410 |
|
19년 전 | 3662 | |
| 409 |
|
19년 전 | 3623 | |
| 408 |
|
19년 전 | 1839 | |
| 407 | 19년 전 | 2208 | ||
| 406 | 19년 전 | 2766 | ||
| 405 | 19년 전 | 2434 | ||
| 404 | 19년 전 | 4291 | ||
| 403 | 19년 전 | 3289 | ||
| 402 |
NeoGenesis
|
19년 전 | 4078 | |
| 401 | 19년 전 | 2592 | ||
| 400 |
|
19년 전 | 2476 | |
| 399 | 19년 전 | 2941 | ||
| 398 | 19년 전 | 2474 | ||
| 397 | 19년 전 | 2774 | ||
| 396 | 19년 전 | 2460 | ||
| 395 | 19년 전 | 3165 | ||
| 394 | 19년 전 | 1698 | ||
| 393 | 19년 전 | 2979 | ||
| 392 | 19년 전 | 2240 | ||
| 391 | 19년 전 | 2171 | ||
| 390 | 19년 전 | 2264 | ||
| 389 | 19년 전 | 2629 | ||
| 388 | 19년 전 | 2122 | ||
| 387 | 19년 전 | 4467 | ||
| 386 |
|
19년 전 | 2670 | |
| 385 |
|
19년 전 | 2460 | |
| 384 | 19년 전 | 2976 | ||
| 383 | 19년 전 | 3036 | ||
| 382 | 19년 전 | 3089 | ||
| 381 |
|
19년 전 | 2624 | |
| 380 |
|
19년 전 | 3003 | |
| 379 | 19년 전 | 2540 | ||
| 378 | 19년 전 | 2194 | ||
| 377 | 19년 전 | 2769 | ||
| 376 | 19년 전 | 2463 | ||
| 375 |
|
19년 전 | 2548 | |
| 374 | 19년 전 | 3795 | ||
| 373 | 19년 전 | 3256 | ||
| 372 | 19년 전 | 4974 | ||
| 371 |
세은아빠2
|
19년 전 | 2403 | |
| 370 | 19년 전 | 4491 | ||
| 369 | 19년 전 | 3095 | ||
| 368 | 19년 전 | 2882 | ||
| 367 | 19년 전 | 3717 | ||
| 366 | 19년 전 | 2628 | ||
| 365 | 19년 전 | 3719 | ||
| 364 | 19년 전 | 3997 | ||
| 363 | 19년 전 | 3421 | ||
| 362 | 19년 전 | 3467 | ||
| 361 | 19년 전 | 4088 | ||
| 360 |
hwatta
|
19년 전 | 2347 | |
| 359 | 19년 전 | 5084 | ||
| 358 | 19년 전 | 3637 | ||
| 357 | 19년 전 | 2580 | ||
| 356 |
sdesign1s
|
19년 전 | 2262 | |
| 355 | 20년 전 | 2728 | ||
| 354 | 20년 전 | 3016 | ||
| 353 | 20년 전 | 2781 | ||
| 352 |
|
20년 전 | 5761 | |
| 351 |
|
20년 전 | 2691 | |
| 350 |
|
20년 전 | 4271 | |
| 349 |
hwatta
|
20년 전 | 2162 | |
| 348 | 20년 전 | 7297 | ||
| 347 | 20년 전 | 2403 | ||
| 346 | 20년 전 | 3486 | ||
| 345 | 20년 전 | 4290 | ||
| 344 | 20년 전 | 2615 | ||
| 343 | 20년 전 | 3907 | ||
| 342 | 20년 전 | 3050 | ||
| 341 | 20년 전 | 4076 | ||
| 340 |
|
20년 전 | 5107 | |
| 339 |
|
20년 전 | 4214 | |
| 338 | 20년 전 | 5842 | ||
| 337 | 20년 전 | 2022 | ||
| 336 |
|
20년 전 | 3298 | |
| 335 |
|
20년 전 | 3526 | |
| 334 |
|
20년 전 | 2908 | |
| 333 |
hwatta
|
20년 전 | 2420 | |
| 332 | 20년 전 | 4643 | ||
| 331 | 20년 전 | 2259 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기