-->
본문 바로가기

IT/toy project

[자산관리 day-4.1.1] Django로 주식 관련 Investing.com의 API 설정(Chat gpt)

Django 로 프로젝트를 만들때 이미 AsStock 라는 앱을 만들어 해당 폴더안에서 작업을 하기로 마음을 먹었다.

일단 가장 기본적인 주식 순위를 가져오기 위해 시가 총액 상위를 가져오기 위해 Chat gpt에게 다음과 같은 질문던졌다.



Investing.com에서 코스피 시가총액 상위 데이터를 가져오는 작업을 장고에서 설계할 때, 다음 두 가지 방법 중 어떤 작업을 먼저 해야 할지 결정하려면 목표와 설계 방식에 따라 접근해야 합니다.


1. API 설정을 먼저 해야 할 경우

  • 상황: 데이터의 구조와 응답 형식을 알아야 모델 설계가 가능한 경우.
    • Investing.com API의 응답(JSON/XML 포맷 등)을 확인하여, 반환되는 데이터의 필드(예: 종목명, 시가총액, 종가, 거래량 등)를 기반으로 데이터베이스 모델을 설계.
  • 장점:
    • 모델을 설계할 때 불필요한 필드 생성이나 구조 변경을 줄임.
    • API에서 제공하지 않는 데이터를 모델에서 제외.
  • 실행 순서:
    1. Investing.com API 연결 및 테스트: Postman이나 Python의 requests 라이브러리를 사용해 데이터 가져오기.
    2. 응답 데이터 분석: JSON 또는 XML 구조를 확인하여 필요한 데이터를 식별.
    3. Django 모델 설계: 확인한 데이터에 맞춰 모델 필드를 정의.

2. Django 모델을 먼저 설계해야 할 경우

  • 상황: 모델의 구조가 이미 정의되어 있거나 명확한 요구사항이 있는 경우.
    • 예: 코스피 시가총액 상위 데이터를 보여줄 테이블 필드가 확실히 정해져 있다면, 데이터를 수집하기 전에 모델을 먼저 정의 가능.
  • 장점:
    • 데이터 구조를 명확히 정의한 후, API를 통해 데이터를 가져오는 작업을 진행 가능.
    • 데이터를 저장하고 사용할 목적에 따라 데이터베이스 구조를 맞출 수 있음.
  • 실행 순서:
    1. 모델 설계: 예상되는 데이터 필드를 기준으로 Django 모델을 정의(예: name, market_cap, price, volume 등).
    2. API 데이터 매핑: 모델 필드와 API 응답 데이터를 매핑.
    3. API 호출 및 저장 로직 작성: Django ORM을 사용해 데이터를 저장.

권장 접근 방식

  • 혼합된 접근법: API를 먼저 테스트하면서 필요한 데이터를 확인하고, 그 데이터를 기반으로 Django 모델을 설계.
    • 이 방법은 데이터가 어떻게 제공되는지 이해하면서, 모델 구조를 더 정확히 정의할 수 있음.

구체적인 설계 및 구현 예시

  1. API 설정 및 테스트:
import requests

API_URL = "https://api.investing.com/api_url_here"
HEADERS = {"Authorization": "Bearer YOUR_API_KEY"}

response = requests.get(API_URL, headers=HEADERS)
if response.status_code == 200:
    data = response.json()
    print(data)  # 응답 데이터 확인
else:
    print(f"Error: {response.status_code}")

 

 

2.Django 모델 설계:

from django.db import models

class Stock(models.Model):
    name = models.CharField(max_length=255)  # 종목명
    market_cap = models.BigIntegerField()   # 시가총액
    price = models.DecimalField(max_digits=10, decimal_places=2)  # 현재가
    volume = models.BigIntegerField()      # 거래량
    date_fetched = models.DateTimeField(auto_now_add=True)  # 데이터 가져온 시간

 

 

3.API 데이터 저장:

from .models import Stock

def save_stock_data():
    response = requests.get(API_URL, headers=HEADERS)
    if response.status_code == 200:
        data = response.json()
        for item in data['results']:  # 응답 데이터 키 확인 필요
            Stock.objects.create(
                name=item['name'],
                market_cap=item['market_cap'],
                price=item['price'],
                volume=item['volume']
            )

 

 

주기적 데이터 업데이트:

  • Celery 또는 Django-Q를 사용하여 주기적으로 데이터를 업데이트하도록 설정.

요약

  1. API에서 제공하는 데이터의 형식을 먼저 확인: 모델을 효율적으로 설계.
  2. Django 모델 설계 후 데이터를 매핑: 더 명확한 데이터 구조를 확보.
  3. API 호출 및 저장 구현: 데이터를 수집하고 저장하는 로직 작성.

이 방식으로 진행하면 데이터 수집과 모델 설계 모두 효율적으로 수행할 수 있습니다. 😊

 

 

 


물론 나는 아직 감부터 익혀야 되기 때문에 섯부른 Model 을 접근하지는 않고 일단 Investing.com의 api 부터 설정을 해야겠다.

  • 실행 순서:
    1. Investing.com API 연결 및 테스트: Postman이나 Python의 requests 라이브러리를 사용해 데이터 가져오기.
    2. 응답 데이터 분석: JSON 또는 XML 구조를 확인하여 필요한 데이터를 식별.
    3. Django 모델 설계: 확인한 데이터에 맞춰 모델 필드를 정의.

그럼.. 이거 부터 시작 해야겠지...............


Investing.com API 연결 및 테스트: Postman이나 Python의 requests 라이브러리를 사용해 데이터 가져오기.

 

라고 생각했으나 ㅠㅠ 아뿔싸........... Chat gpt 로 찾아본결과 한국 주식은 Investing.com 에서 알아보는거는 쉽지 않다는걸 깨달았다..