본문 바로가기
C++ 200제/코딩 IT 정보

네이버 OPEN API 사용법과 블로그 검색 문제점 (C#)

by vicddory 2018. 11. 23.

네이버 OPEN API 사용법과 블로그 검색 문제점 (C#)


얼마 전 네이버 오픈 API를 이용해 프로그램을 제작하려 했지만, 블로그 검색결과가 불일치하여 쓰지 않기로 했습니다. 브라우저를 띄우고 네이버에서 검색한 결과와 네이버 OPEN API로 받은 결과값이 서로 다릅니다. 결과값이 다른데 네이버 OPEN API의 가치가 어디 있는 건지 모르겠습니다.


먼저, 네이버 오픈 API 사용법입니다. 제가 설명하기보단 아래 글을 참조하세요.



위 방법으로 애플리케이션을 등록하고 Client ID를 받았다면 아래 그림처럼 다시 확인해 봅니다.



네이버 오픈 API 사용법과 블로그 검색 문제점[블로그 검색] C# 프로그래밍 예제, 사용법

"검색만 테스트 API"는 제가 생성한 것으로 여러분도 자체 추가한 애플리케이션이 있을 겁니다. 그걸 클릭해 보세요. 그럼 아래처럼 네이버 오픈 API 애플리케이션 목록과 Cliend ID가 확인됩니다.


네이버 오픈 api 예제[블로그 검색] C# 프로그래밍 예제, 사용법


클라이언트 아이디를 클릭하면 아래 그림처럼 Client Secret 코드도 확인할 수 있습니다.


네이버 오픈 api 사용법[블로그 검색] C# 프로그래밍 예제, 사용법


여기까지 완료되었다면, C#, Java, PHP, Node.js, Python으로 코딩할 수 있는 환경이 갖춰진 겁니다.


저는 이 포스트에서 네이버 블로그 검색 결과를 알아보기 위해 이 예제를 참조합니다. 네이버 OPEN API에서 제공하는 기본 소스 코드입니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using System;
using System.Net;
using System.Text;
using System.IO;
 
namespace NaverAPI_Guide
{
    public class APIExamSearchBlog
    {
        static void Main(string[] args)
        {
            string query = "네이버 Open API"// 검색할 문자열
            string url = "https://openapi.naver.com/v1/search/blog?query=" + query; // 결과가 JSON 포맷
            // string url = "https://openapi.naver.com/v1/search/blog.xml?query=" + query;  // 결과가 XML 포맷
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
            request.Headers.Add("X-Naver-Client-Id""YOUR-CLIENT-ID"); // 클라이언트 아이디
            request.Headers.Add("X-Naver-Client-Secret""YOUR-CLIENT-SECRET");       // 클라이언트 시크릿
            HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            string status = response.StatusCode.ToString();
 
            if(status == "OK")
            {
                Stream stream = response.GetResponseStream();
                StreamReader reader = new StreamReader(stream, Encoding.UTF8);
                string text = reader.ReadToEnd();
                Console.WriteLine(text);
            }
            else
            {
                Console.WriteLine("Error 발생=" + status);
            }
        }
    }
}
cs


12~13번 라인의 string query 값은 찾고 싶은 검색어로 변경하고, 16, 17번 라인에는 위에서 확인한 네이버 API 클라이언트 아이디와 클라이언트 시크릿 키를 추가합니다.

저는 검색어를 "NH투자증권"으로 변경했습니다. 그 결과는 아래에 있는데, API 검색 결과와 네이버 블로그 검색 결과가 다릅니다.


네이버 오픈 api 문제점 블로그[블로그 검색] C# 프로그래밍 예제, 사용법


브라우저에서 검색한 결과입니다. 상위 4개만 추렸을 때 포스트 작성 날짜는 2017.11.24, 2018.06.19, 2018.06.14, 2018.01.09입니다. 하지만 API 검색 결과는 전혀 다릅니다.


API로 받은 상위 4개 포스트 날짜는 2017.11.24, 2017.05.19, 2017.07.27, 2018.06.14입니다.


네이버 오픈 api 결과 예제[블로그 검색] C# 프로그래밍 예제, 사용법


전혀 달라요. 이래서는 네이버 오픈 API를 이용하는 것에 의미가 없습니다.


이런 문제는 예전부터 언급되던 것이더군요. 지난 5월에도 비슷한 글이 네이버 개발자포럼에도 올라왔었습니다. 일부만 발췌합니다.


링크 : 검색 API 결과에 대하여 [클릭]


1. 블로그 검색 네이버 OPEN API의 검색결과 total 수량은 블로그 홈에서 검색한 결과 나오는 게시물 수량과 차이가 있습니다. (홍대맛집 / 블로그 검색 total: 635,643건 / 블로그홈 검색 결과 게시물 수 :593,828건)


2. 블로그 검색 api는 total 63만5천 건이라고 하면서 결과는 블로그홈의 검색결과(59만3천건)를 보여주고 있습니다.


3. 속칭 세부 키워드 들은 결과가 같은데 씨랭크라 판단되는 키워드들은 결과가 다른데요.


저 말고도 이런 문제 때문에 고민하는 개발자가 있습니다. 하지만 황당하게 해답은 가까운 곳에 있었네요.


네이버 오픈 API 운영 정책 중 일부


FAQ 2. 검색 API 결과 관련

검색 API는 컨텐츠 제공자가 임의로 공개 범위를 지정할 수 있어 네이버의 통합검색 결과와 다를 수 있는 점 고려하시고 사용 바랍니다.


네, 네이버에서 자체적으로 임의의 결과를 리턴하고 있습니다. 그러니, 네이버 오픈 API를 아무리 잘 사용하고 싶어도 네이버에서 제공하는 더미 데이터 때문에 한계가 있습니다. 개발자포럼에 달린 다른 분들 댓글처럼 이럴 거면 왜 제공하는지 모르겠네요.


네이버 OPEN API 사용법과 블로그 검색 문제점 (C#)

댓글