여기에서 해보고 싶은 것은 "동탄" 키워드가 들어간 최근 블로그를 검색해서

그 제목과 본문 내용, 링크 값을 얻어오는 코드를 작성해보고자 한다.

 

0. 개발 환경

- OS: Ubuntu 20.04

- Lang: Python 3.10.9

 

 

1. 준비

① NAVER API를 사용하기 위해 API 키를 생성하자.

    - NAVER 서비스 API 사용 준비

 

② 환경변수를 다루기 위해서 dotenvx를 사용해보자.

    - 아는 사람만 쓴다는 Config 관리자 - dotenv, dotenvx

 

 

2. 코드 작성

일단 API 호출을 위해 requests 패키지를 사용하기로 했다.

 

[ requirements.txt ]

requests==2.32.3

 

가급적 클래스 구조로 작성해봤다.

[ main.py ]

import requests
import os

class BlogPost:
    def __init__(self, title, description, link):
        self.title = title.replace("<b>", "").replace("</b>", "")
        self.description = description.replace("<b>", "").replace("</b>", "")
        self.link = link

    def __str__(self):
        return f"Title: {self.title}\nDescription: {self.description}\nURL: {self.link}\n"

class NaverBlogSearcher:
    def __init__(self):
        self.client_id = os.getenv("NAVER_CLIENT_ID")  # 환경변수에서 Client ID 읽어오기
        self.client_secret = os.getenv("NAVER_CLIENT_SECRET")  # 환경변수에서 Client Secret 읽어오기

        # 환경변수 값이 없을 때 예외 처리
        if not self.client_id or not self.client_secret:
            raise ValueError("NAVER_CLIENT_ID and NAVER_CLIENT_SECRET must be set as environment variables.")

    def get_blog_posts(self, query, display=10):
        # 요청 URL 및 헤더 구성
        url = f"https://openapi.naver.com/v1/search/blog.json?query={query}&display={display}&sort=date"
        headers = {
            "X-Naver-Client-Id": self.client_id,
            "X-Naver-Client-Secret": self.client_secret,
        }

        # 네이버 API에 요청 보내기
        response = requests.get(url, headers=headers)
        
        if response.status_code == 200:
            return self.parse_response(response.json())
        else:
            print(f"Error: {response.status_code}, {response.text}")
            return []

    def parse_response(self, data):
        # 응답 데이터 파싱
        blogs = data.get("items", [])
        blog_posts = [BlogPost(blog.get("title"), blog.get("description"), blog.get("link")) for blog in blogs]
        return blog_posts

if __name__ == "__main__":
    # "동탄" 검색어로 최신 블로그 정보 가져오기
    try:
        searcher = NaverBlogSearcher()
        blog_posts = searcher.get_blog_posts("동탄", 3)
        for post in blog_posts:
            print(post)
    except ValueError as e:
        print(e)

 

환경 변수도 작성했다.

[ .env ]

NAVER_CLIENT_ID=""
NAVER_CLIENT_SECRET=""

 

 

3. 실행

dotenvx를 사용해서 실행했다.

> dotenvx run -f .env -- python main.py

 

나름 잘 진행되었다 !!! (스스로 뿌듯~)

반응형

옛날에 한 번 포스팅을 했었는데, 업데이트가 필요해서 다시 작성해본다.

- https://www.whatwant.com/entry/Naver-API-사용-준비하기

 

1. NAVER Developers

네이버 개발자 사이트에 방문해서 로그인까지 진행하자.

- https://developers.naver.com/

 

NAVER Developers

 

 

2. 서비스 API

일단 여기에서는 "검색"을 위한 API 사용 신청하는 과정을 기준으로 설명해보겠다.

 

서비스 API

 

상단 메뉴에서 "서비스 API - 검색" 메뉴를 선택해보자.

 

검색

 

3. 오픈 API 이용 신청

처음 사용자는 이용약관 동의나 계정 설정 등을 요구할 수도 있다.

나는 예전에 신청했던 이력이 있어서인지 바로 애플리케이션 등록 창으로 이동되었다.

 

애플리케이션 등록

 

"애플리케이션 이름" 적절하게 창작하면 되고,

"사용 API"는 검색을 선택했다. 각자 필요한 것 추가해도 된다.

 

"비로그인 오픈 API 서비스 환경"은 사용할 상황에 따라 잡아주면 되는데,

나는 일단 "WEB 설정"으로 하고 적당한 도메인 정보를 넣어주었다.

 

4. 애플리케이션 정보

사용할 때 필요한 "Client ID"와 "Client Secret"이 발행되었다.

 

애플리케이션 정보

 

하루에 2만5천번 호출할 수 있네!!!!

 

반응형

+ Recent posts