Python과 API: requests 모듈로 데이터 가져오기

Python과 API: requests 모듈로 데이터 가져오기


목차

  1. 서론
  2. API란 무엇인가?
    1. API의 기본 개념
    2. RESTful API 소개
  3. requests 모듈 소개
    1. requests 모듈 설치
    2. 기본 사용법
  4. GET 요청으로 데이터 가져오기
    1. 기본 GET 요청
    2. URL 매개변수 사용
    3. 헤더 추가
  5. POST 요청으로 데이터 전송하기
    1. 기본 POST 요청
    2. JSON 데이터 전송
    3. 폼 데이터 전송
  6. 실습 예제: 공공 API 사용하기
    1. 공공 API 소개
    2. 공공 API에서 데이터 가져오기
  7. 오류 처리 및 예외 처리
  8. 결론
  9. 추천 태그

1. 서론

현대의 많은 애플리케이션은 API(Application Programming Interface)를 통해 데이터를 주고받습니다. Python에서는 requests 모듈을 사용하여 API와 상호작용할 수 있습니다. 이번 포스팅에서는 초보 개발자도 쉽게 이해할 수 있도록 requests 모듈을 사용하여 API로부터 데이터를 가져오는 방법을 설명하겠습니다.


2. API란 무엇인가?


2.1 API의 기본 개념

API는 소프트웨어 애플리케이션 간의 상호작용을 위한 인터페이스를 의미합니다. API를 통해 애플리케이션은 데이터를 요청하고, 서버는 그에 대한 응답을 반환합니다.


2.2 RESTful API 소개

REST(Representational State Transfer)는 웹 서비스 구축을 위한 아키텍처 스타일입니다. RESTful API는 HTTP 메소드를 사용하여 리소스를 CRUD(Create, Read, Update, Delete) 방식으로 처리합니다.


  • GET: 데이터 조회
  • POST: 데이터 생성
  • PUT: 데이터 업데이트
  • DELETE: 데이터 삭제

3. requests 모듈 소개


3.1 requests 모듈 설치

requests 모듈은 Python에서 HTTP 요청을 보내기 위한 간단하고 직관적인 방법을 제공합니다. pip를 사용하여 설치할 수 있습니다.


pip install requests

3.2 기본 사용법

requests 모듈을 사용하여 HTTP 요청을 보내고 응답을 받는 기본 방법을 알아보겠습니다.


import requests

response = requests.get('https://api.github.com')
print(response.status_code)  # 상태 코드 출력
print(response.text)  # 응답 본문 출력

4. GET 요청으로 데이터 가져오기


4.1 기본 GET 요청

GET 요청은 서버로부터 데이터를 가져올 때 사용됩니다.


response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
print(response.json())  # JSON 응답을 파이썬 딕셔너리로 변환하여 출력

4.2 URL 매개변수 사용

URL 매개변수를 사용하여 추가 데이터를 전달할 수 있습니다.


params = {'userId': 1}
response = requests.get('https://jsonplaceholder.typicode.com/posts', params=params)
print(response.json())

4.3 헤더 추가

HTTP 헤더를 추가하여 요청을 보낼 수 있습니다.


headers = {'Authorization': 'Bearer YOUR_ACCESS_TOKEN'}
response = requests.get('https://api.example.com/data', headers=headers)
print(response.json())

5. POST 요청으로 데이터 전송하기


5.1 기본 POST 요청

POST 요청은 서버에 데이터를 전송할 때 사용됩니다.


data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', data=data)
print(response.json())

5.2 JSON 데이터 전송

JSON 형식으로 데이터를 전송하려면 json 매개변수를 사용합니다.


json_data = {'title': 'foo', 'body': 'bar', 'userId': 1}
response = requests.post('https://jsonplaceholder.typicode.com/posts', json=json_data)
print(response.json())

5.3 폼 데이터 전송

폼 데이터를 전송하려면 data 매개변수를 사용합니다.


form_data = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=form_data)
print(response.json())

6. 실습 예제: 공공 API 사용하기


6.1 공공 API 소개

공공 API는 정부나 기관에서 제공하는 데이터를 사용할 수 있게 하는 API입니다. 여기서는 예제로 한국 공공 데이터 포털의 API를 사용하겠습니다.


6.2 공공 API에서 데이터 가져오기

공공 데이터 포털에서 제공하는 대기오염 정보를 가져오는 예제를 작성해보겠습니다.


  1. API 키 발급:
    공공 데이터 포털에 가입하고 API 키를 발급받습니다.
  2. API 요청 코드 작성:

import requests

api_key = 'YOUR_API_KEY'
url = 'http://apis.data.go.kr/B552584/ArpltnStatsSvc/getCtprvnMesureLIst'
params = {
    'serviceKey': api_key,
    'returnType': 'json',
    'numOfRows': 10,
    'pageNo': 1,
    'itemCode': 'PM10',
    'dataGubun': 'HOUR',
    'searchCondition': 'WEEK'
}

response = requests.get(url, params=params)
data = response.json()

for item in data['response']['body']['items']:
    print(f"{item['dataTime']}: {item['seoul']}㎍/m³")

7. 오류 처리 및 예외 처리

HTTP 요청을 보낼 때 발생할 수 있는 오류를 처리하는 방법을 알아보겠습니다.


try:
    response = requests.get('https://jsonplaceholder.typicode.com/posts/1')
    response.raise_for_status()  # HTTP 오류 발생 시 예외 발생
    data = response.json()
    print(data)
except requests.exceptions.HTTPError as err:
    print(f"HTTP error occurred: {err}")
except requests.exceptions.ConnectionError as err:
    print(f"Connection error occurred: {err}")
except requests.exceptions.Timeout as err:
    print(f"Timeout error occurred: {err}")
except requests.exceptions.RequestException as err:
    print(f"An error occurred: {err}")

8. 결론

이번 포스팅에서는 Python의 requests 모듈을 사용하여 API로부터 데이터를 가져오는 방법을 알아보았습니다. requests 모듈은 간단하고 직관적인 인터페이스를 제공하여 다양한 HTTP 요청을 쉽게 처리할 수 있습니다. 공공 API를 사용한 실습 예제를 통해 실제 데이터를 가져오는 방법을 익혀보시기 바랍니다.

이 포스팅이 Python을 처음 접하는 분들에게 도움이 되길 바랍니다. 더 많은 유용한 Python 팁을 원하시면 블로그의 다른 포스팅도 참고해보세요.

다음 이전