개발공부/Python

파이썬으로 네이버 주식 현재가 가져오기

ssung85 2020. 12. 4. 15:14
728x90

주식을 조금씩 하고 있긴 한데. 회사가 너무 많다... 내가 보고 싶은 회사만 현재가 실시간으로 받아 오도록 해봤다.

최종적으로 원하는 회사의 현재가를 실시간으로 계속 가져오게 하는 것이다.ㅎ

 

1. 네이버 주식 페이지 정보 불러오기

import requests
from bs4 import BeautifulSoup

url = "https://finance.naver.com/item/main.nhn?code=005930"
result = requests.get(url)

print(result.content)

알수 없는 문자가 잔뜩 나온다..

2. BeautifulSoup 데이터 가공 하기

import requests
from bs4 import BeautifulSoup

url = "https://finance.naver.com/item/main.nhn?code=005930"
result = requests.get(url)
bs_obj = BeautifulSoup(result.content, "html.parser")

print(bs_obj)

홈페이지에서 사용되는 소스가 받아 오는 것을 볼 수 있다.

3. 현재가 가져오기

홈페이지 보면 no_today 라는 속성 값이 현재가인 것을 알 수 있다.

#네이버 금융 삼성전자 데이터 수집
import requests
from bs4 import BeautifulSoup

#함수형태 변환
def get_bs_obj():
    url = "https://finance.naver.com/item/main.nhn?code=005930"
    result = requests.get(url)
    bs_obj = BeautifulSoup(result.content, "html.parser") #html.parser 로 파이썬에서 쓸 수 있는 형태로 변환
    return bs_obj

#호출
bs_obj = get_bs_obj()
#현제가 추출
no_today = bs_obj.find("p", {"class":"no_today"})
print(no_today)

class="blind" 71,400 확인 할 수 있다.

4. 가격만 가져오기

#네이버 금융 삼성전자 데이터 수집
import requests
from bs4 import BeautifulSoup

#함수형태 변환
def get_bs_obj():
    url = "https://finance.naver.com/item/main.nhn?code=005930"
    result = requests.get(url)
    bs_obj = BeautifulSoup(result.content, "html.parser") #html.parser 로 파이썬에서 쓸 수 있는 형태로 변환
    return bs_obj

#호출
bs_obj = get_bs_obj()
#현제가 추출
no_today = bs_obj.find("p", {"class":"no_today"})
blind_now = no_today.find("span", {"class":"blind"})
print(blind_now.text)

5. 여러 회사의 현재가를 무한루프를 돌려 계속 가져오기

#네이버 금융 삼성전자 데이터 수집
import requests
from bs4 import BeautifulSoup
import time

def get_bs_obj(com_code):
        url = "https://finance.naver.com/item/main.nhn?code=" + com_code
        result = requests.get(url)
        bs_obj = BeautifulSoup(result.content, "html.parser") #html.parser 로 파이썬에서 쓸 수 있는 형태로 변환
        return bs_obj

def get_price(com_code):
        bs_obj = get_bs_obj(com_code)
        no_today = bs_obj.find("p", {"class":"no_today"})
        blind_now = no_today.find("span", {"class":"blind"})
        return blind_now.text

while True:
#삼성전자 005930
    print("삼성전자 현제가")
    print(get_price("005930"))
    print()
#셀트리온 068270
    print("셀트리온 현제가")
    print(get_price("068270"))
    print()
#카카오 035720
    print("카카오 현제가")
    print(get_price("035720"))
    print("=================================")
    time.sleep(5)
    print()

 

결과값

728x90