현대 사회에서는 데이터의 중요성이 날로 커지고 있습니다. 기업과 개인은 실시간 데이터를 수집하고 분석하여 보다 나은 의사결정을 내릴 수 있습니다. 이러한 데이터를 효율적으로 모으기 위해 웹 API(Application Programming Interface)가 큰 역할을 하고 있습니다. 이 글에서는 파이썬을 이용해 웹 API를 연동하여 실시간 데이터를 가져오는 방법에 대해 알아보겠습니다. 본 내용은 초보자를 대상으로 하며, 단계별로 설명할 것입니다.
웹 API는 서로 다른 소프트웨어 시스템 간의 상호 작용을 가능하게 해주는 인터페이스입니다. 이를 통해 데이터와 기능을 외부에서 요청하고 사용할 수 있습니다. 웹 API는 주로 HTTP 프로토콜을 이용하여 통신하며, REST(Representational State Transfer) 또는 SOAP(Simple Object Access Protocol)과 같은 아키텍처 스타일을 따릅니다.
먼저 파이썬이 설치되어 있어야 합니다. 여기에서 최신 버전을 다운로드하여 설치할 수 있습니다. 설치가 완료되면 커맨드 라인 또는 터미널에서 아래의 명령어를 입력해 파이썬이 정상적으로 설치되었는지 확인합니다.
python --version
웹 API와 연동하기 위해 requests 라이브러리를 사용합니다. 이 라이브러리는 HTTP 요청을 간편하게 처리할 수 있도록 도와줍니다. 아래의 명령어를 커맨드 라인에서 실행해 설치합니다.
pip install requests
많은 웹 API는 사용하기 위해 API 키를 요구합니다. 예를 들어, 날씨 정보를 제공하는 OpenWeatherMap API를 사용하겠습니다. 다음 링크에서 회원가입 후 API 키를 발급받습니다.
올바른 API 호출을 위해서는 API 문서를 참조해야 합니다. OpenWeatherMap API의 문서는 다음 링크에서 확인할 수 있습니다:
이제 아래의 파이썬 코드를 통해 API를 호출해 보겠습니다. 날씨 정보를 요청하는 기본적인 코드입니다.
import requests
apikey = 'YOURAPI_KEY'
city = 'Seoul'
baseurl = f'http://api.openweathermap.org/data/2.5/weather?q={city}&appid={apikey}&units=metric'
response = requests.get(base_url)
data = response.json()
if response.status_code == 200:
print(f"{city}의 현재 온도는 {data['main']['temp']}°C 입니다.")
else:
print("정보를 가져오는 데 실패했습니다.")
실제 환경에서는 예외가 발생할 수 있으므로 적절한 예외 처리가 필요합니다. 아래의 코드에서는 예외 처리를 추가하여 더욱 견고한 코드를 만들어 보겠습니다.
try:
response = requests.get(base_url)
response.raiseforstatus()
data = response.json()
print(f"{city}의 현재 온도는 {data['main']['temp']}°C 입니다.")
except requests.exceptions.RequestException as e:
print(f"API 요청 중 오류가 발생했습니다: {e}")
API에서 받은 데이터는 종종 불필요한 정보도 포함되어 있습니다. 필요한 정보만 가공하여 출력하는 방법에 대해 알아보겠습니다. 아래의 예시에서는 현재 온도와 날씨 설명만 출력합니다.
if response.status_code == 200:
temperature = data['main']['temp']
weather_description = data['weather'][0]['description']
print(f"{city}의 현재 온도는 {temperature}°C이며, 날씨는 {weather_description}입니다.")
가져온 데이터를 CSV 파일로 저장하는 기능을 추가해보겠습니다. 다음 파이썬 코드를 사용해 데이터를 저장할 수 있습니다.
import csv
with open('weather_data.csv', mode='w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['City', 'Temperature', 'Description'])
writer.writerow([city, temperature, weather_description])
웹 API를 통해 실시간 데이터를 가져오는 방법에 대해 알아보았습니다. 파이썬의 requests 라이브러리를 활용하여 API에 요청하고, 반환된 데이터를 가공하는 과정까지 설명했습니다. 이 과정에서 API의 기본적인 개념, 설치와 환경 설정, 데이터 가공 및 저장까지 다양한 내용을 다루었습니다. 초보자라도 본 글을 통해 웹 API를 좀 더 쉽게 이해하고 활용할 수 있을 것입니다. 지속적으로 데이터 API와 관련된 다양한 기술을 학습하여 데이터 분석 능력을 향상시키길 바랍니다.