728x90
반응형
네이버 Open API를 사용하기 위해 개발자 센터에서 발급받은 클라이언트 id, secret은 개인 정보 입니다. 그렇기에 보안상 소스 코드와 함께 깃허브 등에 올리지 않는 것이 좋습니다. 민감한 정보이므로 코드와 분리하여 별도의 환경 변수나 설정 파일을 사용하여 안전하게 관리하는 것이 좋습니다.
네이버 Open API 사용하기
네이버 Open API를 사용하여 크롤링 하는 법에 대해 알고 싶으신 분은 밑의 글을 먼저 보고 오셔야 합니다.
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
반응형
'크롤링' 카테고리의 다른 글
[파이썬] 셀레니움 크롬 드라이버 버전 확인 다운로드 방법 (0) | 2023.11.27 |
---|---|
[파이썬] 네이버 Open API를 사용하여 검색 결과 크롤링하기 (2) | 2023.10.21 |