본문 바로가기
  • 테크에 관한 모든 것.
IT

[python] 네이버페이 증권 : 주식 데이터 크롤링 프로그램 & 데이터 분석

by @TA 2024. 10. 30.

1. 프로젝트 소개 및 준비 사항

네이버페이에서 제공하는 증권 데이터를 크롤링하여 사용자에게 도움이 되는 분석을 할 수 있는 프로그램을 작성해봤습니다.

 

프로그래밍에 익숙하지 않은 분들도 쉽게 따라 할 수 있도록 단계별로 설명하였고,

아래 내용을 따라가기 위해서는 다음 2가지 사전 준비 사항이 필요합니다.😆

  • Python 3.8 이상 설치
  • 기본적인 Python 문법 이해

2. 필요한 라이브러리 설치하기

먼저 데이터를 크롤링하고 분석할 때 필요한 라이브러리를 설치합니다.

아래 코드로 설치 진행하시면 됩니다.

!pip install requests beautifulsoup4 pandas matplotlib

 

  • requests : 웹 페이지 요청을 보내고 HTML 데이터를 가져옵니다.
  • beautifulsoup4 : HTML 데이터를 파싱하고 필요한 부분만 추출합니다.
  • pandas : 데이터프레임으로 데이터를 다루기 위해 사용합니다.
  • matplotlib : 데이터를 시각화하기 위해 사용합니다.

3. 네이버페이 증권 데이터 크롤링

네이버페이 증권 데이터를 가져오는 크롤링 코드를 작성해 보겠습니다.

예를 들어, 특정 주식 종목의 가격 변동 데이터를 가져오는 코드를 작성해봅니다.

import requests
from bs4 import BeautifulSoup
import pandas as pd

# 네이버 주식 특정 종목 URL (예시: 삼성전자)
url = "https://finance.naver.com/item/main.nhn?code=005930"  # 삼성전자 코드 예시

# HTTP 요청 보내기
response = requests.get(url)
html = response.text

# HTML 파싱하기
soup = BeautifulSoup(html, 'html.parser')

# 주가 데이터 추출 (현재가, 시가총액 등)
current_price = soup.select_one('.no_today .blind').get_text()
market_cap = soup.select_one('.no_info .blind').get_text()

print(f"현재가: {current_price}원, 시가총액: {market_cap}")

 

 

위 코드를 실행하면 삼성전자의 현재가와 시가총액을 확인할 수 있습니다.

다른 종목 코드로 URL을 바꾸어 크롤링할 수도 있습니다.


4. 크롤링한 데이터 저장 및 전처리

여러 종목을 크롤링한 후 Pandas 데이터프레임에 저장하여 전처리해 보겠습니다.

# 데이터프레임 생성
data = {
    "종목명": ["삼성전자", "LG전자", "SK하이닉스"],  # 예시 종목명
    "현재가": [current_price, "152,000", "127,500"],  # 예시 가격
    "시가총액": [market_cap, "18조", "24조"]  # 예시 시가총액
}

df = pd.DataFrame(data)
df["현재가"] = df["현재가"].str.replace(",", "").astype(int)
df["시가총액"] = df["시가총액"].str.replace("조", "").astype(float)

print(df)

5. 데이터 분석 케이스 (종목 기반 예시)

Case 1 : 일일 변동률 분석 - 삼성전자

일일 변동률을 계산하여 삼성전자의 주가 변동성을 파악합니다.

하루하루 주가가 얼마나 변동하는지를 알면 투자자 입장에서 주식의 안정성을 판단하는 데 도움이 됩니다.

예를 들어, 삼성전자의 전일 종가가 70,000원, 오늘 현재가가 71,500원이라고 가정합니다.

# 삼성전자 일일 변동률 예제
previous_close = 70000  # 전일 종가
current_price = 71500  # 오늘 현재가

# 변동률 계산
change_rate = (current_price - previous_close) / previous_close * 100
print(f"삼성전자 일일 변동률: {change_rate:.2f}%")

 

결과 해석
출력된 변동률이 +2.14%로 나타난다면, 이는 삼성전자가 전날보다 2.14% 상승했음을 의미합니다.

일일 변동률을 통해 특정 종목이 하루 동안 얼마나 변동하는지 알 수 있으며,

주가가 크게 오르거나 내릴 때 그 이유를 조사하는 것이 투자에 도움이 될 수 있습니다.


Case 2 : 주간 성장률 비교 - 삼성전자 vs SK하이닉스

한 주 동안의 성장률을 계산하여 삼성전자와 SK하이닉스의 주가 흐름을 비교해 봅니다.

두 종목이 반도체 관련 주식이라는 점에서 비교해 보면 업계 내 주가 흐름을 파악할 수 있습니다.

 

주간 가격 데이터 예시

  • 삼성전자: [70,000원, 70,500원, 71,000원, 72,000원, 73,000원]
  • SK하이닉스: [120,000원, 121,000원, 119,000원, 122,000원, 124,000원]
# 주간 성장률 계산 예제
weekly_data = {
    "삼성전자": [70000, 70500, 71000, 72000, 73000],
    "SK하이닉스": [120000, 121000, 119000, 122000, 124000]
}

growth_rate = {}
for stock, prices in weekly_data.items():
    growth_rate[stock] = ((prices[-1] - prices[0]) / prices[0]) * 100

print("주간 성장률 비교:", growth_rate)

 

결과 해석
위 코드를 통해 종목별 주간 성장률이 출력됩니다.

삼성전자의 주간 성장률이 +4.29%, SK하이닉스의 주간 성장률이 +3.33%로 나타난다면,

삼성전자가 SK하이닉스보다 한 주간 더 높은 성장률을 보였음을 알 수 있습니다.

 

이 정보를 통해 어떤 종목이 현재 상승세에 있는지 쉽게 비교할 수 있습니다.


Case 3 : 특정 종목의 월간 평균 가격 추이 - 네이버

네이버의 월간 평균 가격을 시각화하여 장기적인 가격 변동 추이를 파악합니다.

네이버와 같은 기술주는 월간 주가 변동성을 보면 시장 상황에 따라 큰 변동을 겪을 수 있습니다.

 

월별 평균 가격 데이터 예시

  • 1월: 300,000원
  • 2월: 310,000원
  • 3월: 320,000원
  • 4월: 315,000원
  • 5월: 325,000원
import matplotlib.pyplot as plt

# 네이버 월간 평균 가격 데이터 예시
monthly_prices = {"1월": 300000, "2월": 310000, "3월": 320000, "4월": 315000, "5월": 325000}

# 그래프 그리기
plt.plot(list(monthly_prices.keys()), list(monthly_prices.values()), marker='o')
plt.title("네이버 월간 평균 가격 추이")
plt.xlabel("월")
plt.ylabel("평균 가격 (원)")
plt.show()

 

결과 해석
그래프를 통해 네이버의 월별 가격 변동이 어떻게 이루어졌는지 시각적으로 확인할 수 있습니다.

예를 들어 4월에는 가격이 일시적으로 하락했지만, 5월에는 다시 상승세를 보이는 등 변동이 있는 것을 확인할 수 있습니다.

월별 데이터를 시각화하면 주식의 장기적인 흐름을 쉽게 파악할 수 있어 투자 결정에 유용합니다.


이번 블로그 글에서는 네이버페이 증권 데이터를 크롤링하고 기본적인 데이터 분석을 수행하는 방법을 다뤘습니다.

초보자도 따라 할 수 있도록 쉽게 작성했으니, 더 많은 데이터와 다양한 분석 방법을 추가하여 직접 응용해 보세요😆

 

 

반응형