경주 여행 가기 전에 경주 맛집으로 키워드 크롤링 해보자 해서 네이버 API 사용. 결국 여행은 못갔지만.
파이썬을 쓸 줄 몰라서 네이버 API 만으로 PHP 에서 해결될까 했는데 검색된 내용의 블로그 본문이 전체 다 나오지 않고 앞에만 약간 나오게 되어 있다. 본문이 다 안보이니까 내가 원하던 결과물을 볼 수 없게 되었지만 어쨌든 결과 나왔으니까 혹쉬 나중에 참고할 수 있게 업로드.
<?
$client_id = "내꺼";
$client_secret = "내꺼";
?>
<?
$encText = urlencode("경주 맛집");
$start_number = 1;
for ($i=0;$i<3;$i++) {
$url = "https://openapi.naver.com/v1/search/blog.json";
$url .= "?query=".$encText."&display=99";
$url .= "&start=";
$url .= $start_number;
$is_post = false;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, $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);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$response = curl_exec ($ch);
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
//echo "status_code:".$status_code."";
curl_close ($ch);
if($status_code == 200) {
$tmp = json_decode($response, true);
echo '<p>';
for ($j=0;$j<100;$j++) {
echo $tmp['items'][$j]['title'].'<br>';
echo $tmp['items'][$j]['link'].'<br>';
echo $tmp['items'][$j]['description'].'<br>';
};
echo '</p>';
} else {
echo "Error 내용:".$response;
}
$start_number = intval($start_number) + 100;
}
?>
데이터 긁어오는 주소는 $url 을 볼 것.
참고 : https://developers.naver.com/docs/search/blog/
네이버 API에 설명이 되어 있지만, display 는 몇 개 긁어올지고 start는 몇 번째부터 가져올지임.
그래서 display 최대 개수가 100이라고 해서 99개씩 보여주는 걸로 하고 for 문 돌림.
for 문 돌리면서 start 가 필요해져서 for 문 마지막에서 $start_number 값을 올려줬다.
끝
728x90