크롤링

[파이썬] 네이버 Open API client id, secret 별도로 관리하기

딱따구르리 2023. 12. 3. 17:00
728x90
반응형

 

 

네이버 Open API를 사용하기 위해 개발자 센터에서 발급받은 클라이언트 id, secret은 개인 정보 입니다. 그렇기에 보안상 소스 코드와 함께 깃허브 등에 올리지 않는 것이 좋습니다. 민감한 정보이므로 코드와 분리하여 별도의 환경 변수나 설정 파일을 사용하여 안전하게 관리하는 것이 좋습니다.

 

네이버 Open API 사용하기

 

네이버 Open API를 사용하여 크롤링 하는 법에 대해 알고 싶으신 분은 밑의 글을 먼저 보고 오셔야 합니다.

 

[파이썬] 네이버 Open API를 사용하여 검색 결과 크롤링하기

네이버 Open API란? 네이버 OpenAPI는 네이버에서 제공하는 기능, 데이터에 접근할 수 있게 해주는 API(응용 프로그래밍 인터페이스)입니다. 제공하는 기능으로는 검색, 로그인, 번역 등이 있습니다.

buzz-program.tistory.com

 

dotenv 모듈을 활용하여 환경 변수를 관리하는 법에 대해 알아보겠습니다.

 

 

dotenv 패키지 설치하기

pip install python-dotenv

 

 

.env 파일 사용하기

 

1) 프로젝트 디렉토리에 '.env' 파일을 생성합니다.(main.py 파일과 같은 선상에 위치하도록 생성하면 됩니다.)

2) .env 파일 안에 네이버 클라이언트 id와 secret을 저장합니다. 

NAVER_CLIENT_ID="YOUR_CLIENT_ID"
NAVER_CLIENT_SECRET="YOUR_CLIENT_SECRET"

본인이 발급받은 것으로 변경해주면 됩니다.

 

3) 파이썬 코드에서 'python-dotenv'모듈을 사용하여 환경 변수를 로드합니다.

import os
from dotenv import load_dotenv

# .env 파일에서 환경 변수 로드
load_dotenv()

# 네이버 클라이언트 ID와 클라이언트 시크릿 가져오기
client_id = os.getenv("NAVER_CLIENT_ID")
client_secret = os.getenv("NAVER_CLIENT_SECRET")

 

반응형

 

 

전체 코드 보기

 

이전 글에 이어 이를 활용한 전체 코드를 보겠습니다. 

import requests  #http 요청을 보내고 응답을 받기 위함
import json
import os
from dotenv import load_dotenv

def search_naver_blog(query, client_id, client_secret):
    base_url = "https://openapi.naver.com/v1/search/blog"  #검색 API 기본 URL 주소
    headers = {
        "X-Naver-Client-Id": client_id,
        "X-Naver-Client-Secret": client_secret
    }
    params = {
        "query": query,  #검색어
        "display": 10  #검색 결과 개수
    }

    response = requests.get(base_url, headers=headers, params=params)
    results = []
    if response.status_code == 200:
        data = response.json()  #JSON 형식으로 파싱
        for item in data['items']:  #JSON 형식 결괏값에서는 'items' 속성의 JSON 배열로 개별 검색 결과를 반환함
            results.append({
                'item': item
            })
    else:
        print(f'Error: {response.status_code}')
    return results

# **
# .env 파일에서 환경 변수 로드
load_dotenv()

# **
# 네이버 클라이언트 ID 가져오기
client_id = os.getenv("NAVER_CLIENT_ID")
client_secret = os.getenv("NAVER_CLIENT_SECRET")
query = input('검색어를 입력하세요: ')

#블로그 검색 결과 가져오기
search_results = search_naver_blog(query, client_id, client_secret)

#수집한 데이터 JSON 파일로 저장
with open('../data/search_results.json', 'w', encoding='utf-8') as json_file:  #파일 객체 json_file 변수에 할당
    json.dump(search_results, json_file, ensure_ascii=False, indent=4)

print('데이터를 JSON 파일로 저장했습니다.')

위의 코드 중 ** 주석을 달아놓은 부분이 변경된 부분입니다. 

 

 

 

 

728x90
반응형