파이썬으로 네이버 주식 데이터 스크래핑하기 (BeautifulSoup 사용)
네이버 금융은 다양한 주식 정보를 빠르게 확인할 수 있는 유용한 플랫폼입니다. 파이썬(Python)을 사용하면 실시간 주식 데이터를 자동으로 수집하고 분석할 수 있습니다. 이 글에서는 BeautifulSoup을 활용하여 네이버 주식 데이터를 가져오는 방법을 소개합니다.
1. 필요한 라이브러리 설치
웹 페이지를 요청하고 HTML을 파싱하기 위해 아래 라이브러리를 설치합니다.
pip install requests beautifulsoup4
2. 네이버 주식 데이터 URL 분석
네이버 금융에서 주식 정보를 확인하려면 종목 코드를 포함한 URL이 필요합니다.
예시: 삼성전자(005930)
https://finance.naver.com/item/main.nhn?code=005930
code=005930
부분이 종목 코드를 의미하며, 다른 종목은 해당 코드만 변경하면 됩니다.
3. 현재 주가 가져오기
삼성전자의 현재 주가를 가져오는 파이썬 예제입니다.
import requests
from bs4 import BeautifulSoup
url = "https://finance.naver.com/item/main.nhn?code=005930"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
price = soup.find("p", class_="no_today").find("span", class_="blind").text
print(f"삼성전자 현재 주가: {price}원")
4. 전일 종가와 시가 정보 가져오기
전일 종가와 시가도 함께 가져올 수 있습니다.
data = soup.find_all("td", class_="first")
previous_close = data[0].find("span", class_="blind").text
open_price = data[1].find("span", class_="blind").text
print(f"전일 종가: {previous_close}원")
print(f"시가: {open_price}원")
5. CSV 파일로 저장하기
가져온 데이터를 CSV 파일로 저장해두면 나중에 분석할 때 유용합니다.
import csv
with open("stock_data.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(["종목명", "현재가", "전일 종가", "시가"])
writer.writerow(["삼성전자", price, previous_close, open_price])
print("데이터가 stock_data.csv에 저장되었습니다.")
6. 전체 코드 정리
import requests
from bs4 import BeautifulSoup
import csv
url = "https://finance.naver.com/item/main.nhn?code=005930"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
price = soup.find("p", class_="no_today").find("span", class_="blind").text
print(f"삼성전자 현재 주가: {price}원")
data = soup.find_all("td", class_="first")
previous_close = data[0].find("span", class_="blind").text
open_price = data[1].find("span", class_="blind").text
print(f"전일 종가: {previous_close}원")
print(f"시가: {open_price}원")
with open("stock_data.csv", "w", newline="") as file:
writer = csv.writer(file)
writer.writerow(["종목명", "현재가", "전일 종가", "시가"])
writer.writerow(["삼성전자", price, previous_close, open_price])
print("데이터가 stock_data.csv에 저장되었습니다.")
주의사항
- robots.txt 확인: 네이버의 robots.txt를 참고하여 허용된 범위 내에서 스크래핑을 진행해야 합니다.
- 요청 제한: 너무 짧은 시간 간격으로 요청을 보내면 IP 차단 등의 문제가 발생할 수 있으므로
time.sleep()
을 사용해 간격을 조절하세요.
정리
파이썬과 BeautifulSoup을 활용하여 네이버 금융에서 주식 정보를 자동으로 수집하는 방법을 소개했습니다.
이 방법을 활용하면 실시간 주식 데이터 분석이나 개인 포트폴리오 관리에 유용하게 사용할 수 있습니다.
※ 본 글은 개인 학습 및 프로젝트 용도로 작성되었습니다. 웹 스크래핑 시에는 사이트의 이용약관과 정책을 반드시 확인하세요.
반응형
'프로그래밍 > Python' 카테고리의 다른 글
파이썬 로그 관리, loguru로 더 쉽게! 설정부터 파일 저장까지 정리 (0) | 2025.03.20 |
---|---|
파이썬 데이터 검증을 쉽게 해주는 Pydantic 라이브러리 사용법 (0) | 2025.03.20 |
[Python] Pillow 라이브러리로 이미지 처리하는 5가지 방법 (0) | 2025.03.19 |
파이썬으로 PDF 파일 처리하기: PyPDF2, pdfplumber 사용법 정리 (0) | 2025.03.18 |
파이썬 리스트 vs 딕셔너리 차이점 정리: 언제 어떤 자료형을 써야 할까? (0) | 2025.03.18 |