본문 바로가기
Study/Django

[Django] 알라딘 API로 수집한 데이터를 프로젝트에 저장하기

by ngool 2024. 9. 23.

이번 포스트는 알라딘 API를 통해 수집한 데이터를 Django 프로젝트 DB에 저장하는 방법에 대해 정리한 것입니다.

 

API에서 데이터를 수집할 때에는 기본적으로 해당 사이트에서 제공하는 공식 문서를 잘 확인해봐야합니다.

알라딘 API 공식 문서를 켜두고 포스트를 읽는 것을 권장할게요!


API로 데이터 수집하고 DB에 저장하는 방법

1. models.py 작성하기

# <앱 이름>/models.py

from django.db import models
import requests

API_URL = 'https://www.aladin.co.kr/ttb/api/ItemList.aspx'
API_KEY = '발급 받은 키'

# Create your models here.
class Book(models.Model):
    isbn = models.CharField(max_length=10)
    title = models.TextField()
    author = models.TextField()
    pub_date = models.DateField()
    description = models.TextField()
    pricesales = models.IntegerField()
    pricestandard = models.IntegerField()
    publisher = models.TextField()


    @classmethod
    def insert_data(cls):
        params = {
        'ttbkey': API_KEY,
        'QueryType': 'ItemNewAll',
        'MaxResults': '10',
        'start': '1',
        'SearchTarget': 'Book',
        'output': 'js',
        'Version': '20131101',
        }

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

        for item in data.get('item'):
            my_model = cls(
                isbn=item['isbn'], 
                title=item['title'],
                author=item['author'],
                pub_date=item['pubDate'],
                description=item['description'],
                pricesales=item['priceSales'],
                pricestandard=item['priceStandard'],
                publisher=item['publisher'],
            )
            my_model.save()

 

클래스 메서드를 만들어, 알라딘 API에서 데이터를 가져와 DB에 저장하는 역할을 담당하도록 합니다.


2. Django Shell에서 클래스 메서드 실행하기

python manage.py shell_plus

 

위 명령어를  통해 Django shell에 접근합니다.

 

이제 처음에 모델에서 만들어준 클래스 메서드 insert_data를 실행해주면 됩니다.

 

DB를 확인해보면, 아래와 같이 DB에 데이터가 들어온 것을 확인할 수 있습니다.