연재 데이터 항해 훈련 일지

약 1분

네이버 API 뉴스 수집을 함수화·모듈화하기

네이버 검색 API로 핀테크 뉴스 제목을 수집해 MySQL과 CSV에 저장했다. 반복되는 코드는 함수화·모듈화(myfunc)로 정리해 수집 스크립트를 재사용할 수 있는 도구로 바꿨다.

TrainingScrapingAPI

요구사항을 먼저 구조화

이번 과제는 요구사항이 명확했다: (1) 네이버 API로 핀테크 뉴스 제목 수집 → (2) MySQL 저장 → (3) CSV 저장 → (4) 함수화 → (5) 모듈화. 제출물도 수집파일·DB 모듈·결과 캡처로 정해져 있었다. 그래서 처음부터 재사용을 염두에 두고 코드를 짰다.

requests의 기본기 복습

import requests
r = requests.get(url, params=payload, headers=headers)
print(r.status_code)   # 200 정상 / 400·500 오류
response = r.json()
  • r.text: utf-8로 인코딩해 한글이 잘 보이는 형태
  • r.content: 서버가 보낸 원본 (HTML 파싱에 사용)
  • r.json(): 내부 json 모듈로 자동 변환

네이버 API는 인증을 위해 X-Naver-Client-Id, X-Naver-Client-Secret 을 헤더에 담아야 한다. 이런 인증 방식이 API마다 다른 규약이라는 걸 알았다.

함수화 그리고 모듈화

같은 로직을 반복하지 않으려고 수집·저장을 함수로 묶고, 공용 함수를 별도 파일(myfunc)로 분리했다.

import sys
sys.path.append("../../")
from myfunc import ...

.env 를 경로 지정해 불러오고(load_dotenv(경로)), API 키를 코드에서 분리한 것도 앞선 학습이 그대로 이어진 부분이다.

정리