다움API 3번째 도서검색.

이미지,블로그,웹,도서,푸시알림까지 되면  

실제 필요한 물건을 만들수 있지 않을까..... 생각아 좀더 나거라~


오픈API 사용량에 관계없이 무제한으로 쓸수있는지 궁금해지네.... 

스크래핑 하지 않고 이렇게 API호출해서 받으니 쉽고 빠르고 좋다.


testpage 도서검색) http://doitforyou.co.kr/test/curl_daum_search_book.php

testpage 웹검색) http://doitforyou.co.kr/test/curl_daum_search_web.php

testpage 이미지검색) http://doitforyou.co.kr/test/curl_daum_search_image.php


<?php
function request($path, $query, $content_type = 'json')
{
$api_server = 'https://dapi.kakao.com';
$headers = array('Authorization: KakaoAK {APIKEY} ');
$opts = array(
CURLOPT_URL => $api_server . $path . '.' . $content_type . '?' . $query,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSLVERSION => 1,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers
);

$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$return_data = curl_exec($curl_session);

if (curl_errno($curl_session)) {
throw new Exception(curl_error($curl_session));
} else {
//print_r(curl_getinfo($curl_session));
curl_close($curl_session);
return $return_data;
}
}


$path = '/v2/search/book';
$content_type = 'json'; // json or xml
$params = http_build_query(array(
'page' => 1,
'size' => 50,
'query' => 'PHP'
,
'category' => 33
));

$res = request($path, $params, $content_type);

//header('Content-Type: application/' . $content_type . '; charset=utf-8');
// echo $res;
//echo $res;
//var_dump($res);
$dt = json_decode($res); //json data type => php object로 변환
//json_encode : php object/array => json data type으로 변환
// var_dump( $dt);

$tCount = $dt->meta->total_count;
$iCnt = count($dt->documents);
echo "<br>";
echo "tCnt_totalcnt:".$tCount . "/" ."iCnt_documents:".$iCnt;
echo "<br>";

for ($i=0; $i < $iCnt; $i++)
{
echo "<p>";

echo "title:".$dt->documents[$i]->title."<br>";
echo "contents:".$dt->documents[$i]->contents."<br>";
echo "url:".$dt->documents[$i]->url."<br>";
echo "isbn:".$dt->documents[$i]->isbn."<br>";

$iCntAuthor = 0;
$iCntAuthor = count($dt->documents[$i]->authors);

for($z=0; $z < $iCntAuthor; $z++)
{
if($z==0){
echo "authors:";
}
echo $dt->documents[$i]->authors[$z];
if($z <> ($iCntAuthor-1) )
{
echo ",";
};
}

echo "</p>";

}
?>


'프로그래밍 > PHP' 카테고리의 다른 글

WAMP 설치  (0) 2020.05.26
Open Api Request / Response Schema구성&실행  (0) 2018.08.19
curl kakao open api 이미지검색하기  (0) 2018.08.06
curl kakao open api사용하기  (0) 2018.08.05
php CURL 사용하기  (0) 2018.07.31

curl로 받은 데이터로 html 형식으로 표현할때 아래에서

header('Content-Type: application/' . $content_type . '; charset=utf-8');

주석처리 해야한다.


아래코드는 

keyword로 검색한 후 결과값으로 이미지를 화면에 보여준다.

thumbnail_url 로 img src에 세팅하면....

속도가 아주~ 빠르다. 내가 검색한 데이타의 image가 이렇게 빠르게 보여지는게 놀랍다고 느껴진다.


json object 개수를 셀때 count를 이용해서 확인하고 

for문으로 image 를 그리고 있다. count($dt->documents)




<!DOCTYPE html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title> image 검색하기 </title>
</head>
<body>

<?php
function request($path, $query, $content_type = 'json')
{
$api_server = 'https://dapi.kakao.com';
$headers = array('Authorization: KakaoAK {KAKAORESTFULAPIKEY}');
$opts = array(
CURLOPT_URL => $api_server . $path . '.' . $content_type . '?' . $query,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSLVERSION => 1,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers
);

$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$return_data = curl_exec($curl_session);

if (curl_errno($curl_session)) {
throw new Exception(curl_error($curl_session));
} else {
//print_r(curl_getinfo($curl_session));
curl_close($curl_session);
return $return_data;
}
}


$path = '/v2/search/image';
$content_type = 'json'; // json or xml
$params = http_build_query(array(
'page' => 1, //조회건수가 많으면 page수 변경하며 추가조회가능
'size' => 20, //한 페이지에 조회되는 데이터 건수
'query' => 'doitforyou.co.kr'
));

$res = request($path, $params, $content_type);

// header('Content-Type: application/' . $content_type . '; charset=utf-8');
$dt = json_decode($res); //json data type => php object로 변환
//json_encode : php object/array => json data type으로 변환

//var_dump($dt);

$tCount = $dt->meta->total_count;
$iCnt = count($dt->documents);
//echo "\r\n";
//echo "tCount:".$tCount;
//echo "icnt:". count($dt->documents);
for ($i=0; $i < $iCnt; $i++)
{
echo "<img src='".$dt->documents[$i]->thumbnail_url."'/>";
if((($i+1)%10 == 0 ) && ($i != 0)){
echo "<br>";
};
//echo "\r\n";
// echo $dt->documents[$i]->doc_url;
//echo "\r\n";
}
?>

</body>
</html>



'프로그래밍 > PHP' 카테고리의 다른 글

Open Api Request / Response Schema구성&실행  (0) 2018.08.19
curl kakao open api 도서검색  (0) 2018.08.10
curl kakao open api사용하기  (0) 2018.08.05
php CURL 사용하기  (0) 2018.07.31
Javascript로 Facebook로그인  (0) 2018.05.26

php curl을 이용하여 카카오 오픈api 검색엔진 사용하기


아래 예제는 다움포탈에서 doitforyou.co.kr로 검색했을경우 블로그 검색데이타(json type)를 가져와서

블로그title, 블로그url를 찍어보는 예제이다.


API는 아래 $path 에 따라서 검색되는 데이타가 달라진다.


$path = '/v2/search/blog';  --블로그

$path = '/v2/search/web';   --웹

$path = '/v2/local/search/address'; --주소


이 API를 이용해서 아이디어가 떠오른다면 APP또는 다른 서비스로 발전할 수 있을것 같다.


출처) https://devtalk.kakao.com .

 json 파싱부분 수정하더 정확한 url잊음

<?php
function request($path, $query, $content_type = 'json')
{
$api_server = 'https://dapi.kakao.com';
$headers = array('Authorization: KakaoAK {APIKEYAPIKEYAPIKEY} ');
$opts = array(
CURLOPT_URL => $api_server . $path . '.' . $content_type . '?' . $query,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_SSL_VERIFYPEER => false,
CURLOPT_SSLVERSION => 1,
CURLOPT_HEADER => false,
CURLOPT_HTTPHEADER => $headers
);

$curl_session = curl_init();
curl_setopt_array($curl_session, $opts);
$return_data = curl_exec($curl_session);

if (curl_errno($curl_session)) {
throw new Exception(curl_error($curl_session));
} else {
curl_close($curl_session);
return $return_data;
}
}

$path = '/v2/search/blog';
$content_type = 'json'; // json or xml
$params = http_build_query(array(
'page' => 1,
'size' => 10,
'query' => 'doitforyou.co.kr'
));

$res = request($path, $params, $content_type);

header('Content-Type: application/' . $content_type . '; charset=utf-8');
echo $res;
//var_dump($res);
$dt = json_decode($res); //json data type => php object로 변환
//json_encode : php object/array => json data type으로 변환

$tCount = $dt->meta->total_count;
echo "\r\n";
echo "tCount:".$tCount;
echo "\r\n";

for ($i=0; $i < $tCount; $i++)
{
echo $dt->documents[$i]->title;
echo "\r\n";
echo $dt->documents[$i]->url;
echo "\r\n";
}
?>


'프로그래밍 > PHP' 카테고리의 다른 글

curl kakao open api 도서검색  (0) 2018.08.10
curl kakao open api 이미지검색하기  (0) 2018.08.06
php CURL 사용하기  (0) 2018.07.31
Javascript로 Facebook로그인  (0) 2018.05.26
php 패스워드 암호화 bcript  (0) 2018.05.02

+ Recent posts