본문 바로가기

WEB

[PHP] 네이버 실시간 검색어

네이버 메인에 노출된 실시간 검색어를 정규식으로 가져와봄


http://www.xpressengine.com/tip/18304443


원본은  @다비(kstjjs@naver.com 이분이 만든것에 추가 해서 


키워드 점수 상승 하강 여부와 점수 까지 가져오도록 수정함

 

 

//네이버 실시간 인기검색어 ( 네이버메인 )
function getPopularKeyword()
{
	/**
	* @brief Get_PopularKeyword함수
	* @return 네이버 인기검색어 순위를 원소로 하는 오브젝트 반환
	*/
	$popret = range(1,10);
	$szServer = "www.naver.com";
	$fp  = fsockopen($szServer, 80, $errorno, $errstr, 30);
	$string = "";
	if(!$fp)
	{
		printf("%s(%s)",$errstr, $errno);
	}
	else
	{
		fputs ($fp, "GET / HTTP/1.0\r\n\r\n");
		while(!feof($fp)) {
			$string .= fgets($fp, 128);
		}
		fclose($fp);
	}
	
	$a = explode("<ol style=\"margin-top:0px;\" id=\"realrank\">", $string);	
	$b = explode("</ol>", $a[1]);
	//$ret=iconv("utf-8","euc-kr",$b[0]); //euckr 에서 사용할경우
	$ret = $b[0];
	$c = explode("\n", $ret);	
	$num = count($c);
	
	$output = Array();
	$objectCount = 0;
	for($i=0; $i<=$num; $i++)
	{					
		//키워드, 상승, 하강 여부 알아옴
		preg_match_all('/<li[^>]+><a[^>]+title="(.*?)">(?:.*?)<span[^>]+>(.*?)<\/span>/i',
				$c[$i], $out, PREG_SET_ORDER);
			
		//키워드에 점수 여부를 알아옴
		preg_match_all('/<span[^>]+class="rk">(.*?)<\/span>/i', $c[$i], $out_point, PREG_SET_ORDER);
		
		if ( $out[0][1] ) { //키워드가 있을경우
			$output[$objectCount]->keyword = $out[0][1];
			$output[$objectCount]->updown = $out[0][2];
			
			if ( $out_point[0][1] ) $output[$objectCount]->point = $out_point[0][1];
			else $output[$objectCount]->point = 0;
			
		}
		$objectCount++;
	}
	return $output;
}

//사용법
	$a = getPopularKeyword();

	echo '<pre>';
	foreach ($a as $key => $val)
	{
		var_dump($val);
	}
	echo '</pre>';
 
 
출처 : http://code.p-ark.co.kr/291