본문 바로가기

PHP

200820 네이버 API 검색 결과 긁어오기

경주 여행 가기 전에 경주 맛집으로 키워드 크롤링 해보자 해서 네이버 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