네이버 검색api 사용 질문 드립니다. 채택완료
kujira
9년 전
조회 4,957
네이버 검색 api로 아래 소스를 이용해 xml을 불러오는것 까지는 했습니다.
<?php</p><p>class NaverProxy {</p><p> public function queryNaver($query, $target) {</p><p> </p><p> $client_id = "";</p><p> $client_secret = "";</p><p> </p><p> $query=urlencode("스칼라티움");</p><p> $target="blog";</p><p> $url = "<a href="<a href="https://openapi.naver.com/v1/search/blog.xml" target="_blank" rel="noopener noreferrer">https://openapi.naver.com/v1/search/blog.xml</a>"><a href="https://openapi.naver.com/v1/search/blog.xml" target="_blank" rel="noopener noreferrer">https://openapi.naver.com/v1/search/blog.xml</a></a>";</p><p> $url = sprintf("%s?query=%s&display=20&start=1&sort=sim&target=blog", $url, $query);</p><p> $is_post = true;</p><p> </p><p> $ch = curl_init();</p><p> curl_setopt($ch, CURLOPT_URL, $url);</p><p>// curl_setopt($ch, CURLOPT_GET, $is_post);</p><p> curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);</p><p> </p><p> $headers = array();</p><p> $headers[] = "X-Naver-Client-Id: ".$client_id;</p><p> $headers[] = "X-Naver-Client-Secret: ".$client_secret;</p><p> </p><p> curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);</p><p> </p><p> $data = curl_exec ($ch);</p><p> curl_close ($ch);</p><p> </p><p> return $data;</p><p> }</p><p> }</p><p> </p><p>$naverproxy = new NaverProxy();</p><p> </p><p>echo $naverproxy -> queryNaver($_POST['query'], $_POST['target']);</p><p>?>
결과는 http://test.thedirectwedding.com/blog.html">http://test.thedirectwedding.com/blog.html 과 같이 제대로 결과를 불러옵니다
문제는 불러온 값에서 제가 사용하고 싶은 부분만 변수로 지정해서 리스트 형식으로 뽑고 싶은데요
예를 들어 하이퍼링크 부분과 제목부분만 변수화해서 제목
이런식으로 사용하려면 어떻게 해야되는걸까요? 제가 알기론 이런걸 파싱이라고 하는것 같은데
제가 워낙 초짜라 그런건 잘 몰라서요...알려주시거나 참고 할 수 있는 예제라도 좀 알려주시면
정말 감사드리겠습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변 2개
채택된 답변
+20 포인트
9년 전
</p><pre><?php
class NaverProxy {
public function queryNaver($query, $target) {
$client_id = "";
$client_secret = "";
$query=urlencode("스칼라티움");
$target="blog";
$url = "<a href="https://openapi.naver.com/v1/search/blog.xml" target="_blank" rel="noopener noreferrer">https://openapi.naver.com/v1/search/blog.xml</a>";
$url = sprintf("%s?query=%s&display=20&start=1&sort=sim&target=blog", $url, $query);
$is_post = true;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
// curl_setopt($ch, CURLOPT_GET, $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);
$data = curl_exec ($ch);
curl_close ($ch);
return $data;
}
}
$naverproxy = new NaverProxy();
</pre><pre>// XML파일에서 원하는 항목만 추출하기
//echo $naverproxy -> queryNaver($_POST['query'], $_POST['target']);
<span style="font-family: 돋움;"><span style="font-size: 14.6667px;">$xmlstring = $naverproxy -> queryNaver($_POST['query'], $_POST['target']);
</span></span><span style="font-family: 돋움;"><span style="font-size: 14.6667px;">
</span><span style="font-size: 11pt;">$xml = simplexml_load_string($xmlstring) or die("에러: 객체를 생성할 수 없습니다");
</span></span><span style="font-family: 돋움; font-size: 11pt;">$items = $xml->channel->item;
</span><span style="font-family: 돋움; font-size: 11pt;">foreach($items as $item){
</span><span style="font-family: 돋움; font-size: 11pt;"> echo '<a href="' . $item->link . '">' . $item->title . '</a>
';
</span><span style="font-family: 돋움; font-size: 11pt;">}
</span><span style="font-family: 돋움; font-size: 11pt;">
?></span></pre><pre><span style="font-family: 돋움; font-size: 11pt;">
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
k
kujira
9년 전
k
kujira
9년 전
foreach 부분을 아래와 같이 수정했더니 오류는 발생하지 않는데 결과가 출력이 되지 않고 빈 화면만 뜨고 있습니다...ㅠㅠ
[code]
if(!empty($items)){
foreach($items as $item){
echo '<a href="' . $item->link . '">' . $item->title . '</a><br>';
}
}
[/code]
[code]
if(!empty($items)){
foreach($items as $item){
echo '<a href="' . $item->link . '">' . $item->title . '</a><br>';
}
}
[/code]
k
kujira
9년 전
덕분에 잘 해결되었습니다. 감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
그런데 Warning: Invalid argument supplied for foreach() in /home/testsite/blog.html on line 39
애러가 발생하는군요 뭐가 빠진게 있나요?