[파이썬python]API 활용하기 - 공공데이터와 연동하여 정보 가져오기

 지난 시간에는 파이썬으로 이메일을 자동으로 보내는 법을 배웠습니다. 오늘은 거기서 한 단계 더 나아가, 내 프로그램이 인터넷상의 실시간 정보를 가져와 스스로 판단하게 만드는 'API(Application Programming Interface)' 활용법을 다룹니다. API는 쉽게 말해 '데이터를 제공하는 정식 창구'입니다.

  1. API란 무엇인가? 우리가 웹 크롤링을 할 때는 사이트의 소스 코드를 긁어와서 필요한 정보를 찾았죠. 하지만 사이트 구조가 바뀌면 코드를 수정해야 하는 번거로움이 있습니다. API는 이런 불편함을 해결하기 위해 데이터 제공자가 '데이터만 깔끔하게 가져가세요'라고 열어둔 통로입니다. 기상청의 날씨 정보, 주식 시세, 지하철 도착 시간 등은 대부분 API를 통해 제공됩니다.

  2. 공공데이터 API 연동 준비하기 한국의 경우 '공공데이터포털(data.go.kr)'에서 수많은 정보를 무료로 제공합니다. 이곳에서 원하는 데이터의 '활용 신청'을 하면 고유한 '인증키(Service Key)'를 줍니다. 이 키가 있어야 우리가 정당하게 데이터를 가져올 수 있습니다. 인증키는 여러분의 디지털 신분증과 같으니 절대 다른 사람에게 공개하지 마세요.

  3. 실무 활용: 공공데이터 가져오기 예시 파이썬에서는 'requests' 라이브러리를 사용하여 API에 접속합니다.

import requests

공공데이터포털에서 받은 인증키와 API 주소

service_key = "여러분의_인증키" url = "http://api.data.go.kr/openapi/..." params = {"serviceKey": service_key, "dataType": "JSON"}

response = requests.get(url, params=params) data = response.json() # JSON은 데이터를 주고받는 표준 규격입니다.

print(data)

API의 결과값은 보통 'JSON'이라는 형식으로 오는데, 이는 6편에서 배운 딕셔너리와 거의 흡사합니다. 딕셔너리처럼 이름표(Key)를 이용해 원하는 정보만 쏙쏙 뽑아올 수 있죠.

  1. JSON 데이터 분석하기 API로 받아온 데이터는 덩치가 꽤 큽니다. 처음에는 print(data)로 전체를 출력해 보면 당황스러울 정도로 복잡해 보일 거예요. 이때는 파이썬에서 제공하는 'json.dumps(data, indent=4)' 기능을 사용하세요. 계층 구조가 깔끔하게 정렬되어 출력되므로 어떤 곳에 내가 원하는 정보가 들어있는지 눈으로 확인하기 훨씬 쉽습니다.

  2. API 사용 시 주의사항 및 한계

  • 호출 횟수 제한: 공공데이터 API는 하루에 가져올 수 있는 데이터 양이 정해져 있습니다. 개발 단계에서 너무 자주 호출하면 금방 제한에 걸릴 수 있으니, 데이터를 한 번 가져온 뒤에는 파일로 저장해두고 그것을 분석하는 방식으로 설계하세요.

  • 데이터 형식 변경: API 제공자가 데이터 구조를 살짝 바꿀 때가 있습니다. 이 경우 내 코드가 에러를 낼 수 있으므로, 7편에서 배운 예외 처리를 반드시 포함해야 합니다.

  • 인터넷 환경: API는 실시간 접속이 필요하므로 인터넷이 끊기면 데이터도 가져올 수 없습니다. 안정적인 자동화 시스템을 위해서는 인터넷 연결 확인 로직도 중요합니다.

  1. 나의 경험담 처음 미세먼지 API를 연동했을 때, 데이터가 리스트와 딕셔너리로 5~6단계 이상 꼬여 있어서 길을 잃었던 기억이 납니다. 그럴 때마다 조금씩 단계를 쪼개서 출력해보며 구조를 파악했습니다. API 연동은 처음엔 복잡해 보이지만, 한 번 성공하면 세상의 모든 오픈 데이터를 내 마음대로 요리할 수 있는 권한을 얻는 것과 같습니다. 여러분의 업무에 필요한 실시간 정보가 있다면 무엇이든 API로 연동해 보세요.

핵심 요약

  • API는 데이터를 안전하고 정식으로 가져오기 위한 정식 창구이며, 공공데이터포털 등에서 무료로 이용할 수 있습니다.

  • 인증키(Service Key)는 보안이 중요하므로 타인에게 절대 노출하지 않아야 합니다.

  • 받아온 JSON 데이터는 파이썬의 딕셔너리 구조와 매우 유사하므로, 계층 구조를 파악하여 필요한 정보만 추출합니다.

다음 편 예고 다음 시간에는 작성한 코드의 가독성을 높이고, 실행 속도를 개선하여 전문가다운 파이썬 코드로 다듬는 '코드 최적화'를 배웁니다.

댓글 유도 질문 여러분의 업무 영역에서 '실시간 정보'가 들어오면 훨씬 편해질 것 같은 업무는 무엇인가요? (예: 환율, 원자재 가격, 특정 뉴스 등) 공유해주시면 어떤 API를 쓰면 좋을지 힌트를 드리겠습니다!

댓글

이 블로그의 인기 게시물

[3편] 파이썬 환경 구축에서 90%가 겪는 시행착오 (Anaconda vs venv vs Docker)

[5편] 데이터 시각화로 AI 데이터 통찰 얻기 (Matplotlib & Seaborn)