2021년 3월 22일 월요일

[파이썬] 주가정보을 조회하기 코드에서 주식종목 수정기능 및 런타임 오류처리 추가

 

이전에 포스팅한 주가정보 조회하기 코드에서 만약 주식종목코드가 잘못되었을 경우에는 오류가 발생할 수 있습니다.

 

오류가 발생하면 실행되던 코드가 오류를 디스플레이하면서 멈추게 되는데, 이러면 짜증이 날 듯 합니다.

 

그래서 오류가 발생시에 코드를 멈추지 않고 오류발생을 알려주면서 오류가 발생된 주식종목을 삭제하거나 수정할 수 있게 코드를 좀더 보완했습니다.

 

import requests

from bs4 import BeautifulSoup

 

stock_list = []   # 관심종목 목록

stock_item = ["", ""]   # 추가할 관심종목 입력

sel = ""

st_no = ""

st_name = ""   # 관심종목 이름 입력

st_code = ""   # 관심족옥 코드 입력

 

url = ""

url_temp = "https://finance.naver.com/item/main.nhn?code="

 

while True:

    print ("==========")

print ("96 : 관심종목 추가")   # 주식종목 추가

    print ("97 : 관심종목 수정")   # 주식종목 수정

    print ("98 : 관심종목 삭제")   # 주식종목 삭제

print ("99 : 종료")

    print ("종목코드 번호 : 선택한 종목 주가정보 조회")

    print ("==========")

 

    i = 0

    for i in range ( len(stock_list) ):

        print (i, " - ", stock_list[i][0], stock_list[i][1])

        i = i + 1

 

    print ("==========")

 

    sel = input ("원하는 항목을 입력하세요 : ")

    sel_no = int(sel)

 

    if sel == "96":   # 새로운 주식종목 추가

        st_name = input ("종목이름 : ")

        st_code = input ("종목코드 : ")

        stock_item[0] = st_name

        stock_item[1] = st_code

        stock_list.append(list(stock_item))

 

elif sel == "97":

        st_no = input ("종목항목번호 : ")

        st_name = input ("종목이름 : ")

        st_code = input ("종목코드 : ")

        stock_item[0] = st_name

        stock_item[1] = st_code

        stock_list.copy(list(stock_item))   # 수정한 종목코드를 목록에 복사

 

    elif sel == "98":   # 지정된 주식종목 삭제

        st_no = input ("종목항목번호 : ")

        del stock_list[ int(st_no) ]

 

    elif sel == "99":   # 종료

        break

 

    else:   # 선택한 주식종목 주가정보 보여주기

        url = url_temp + stock_list[sel_no][1]

 

        response = requests.get (url)

 

        if response.status_code == 200:

            html = response.text

            soup = BeautifulSoup (html, 'html.parser')

print ("----------")

 

            try:   # 오류발생을 처리

                print (soup.dl.text)

            except:

                print ("주식종목코드 오류")

 

            print ("----------")

 

아래와 같이 삼성전자를 예를 들어 보면 종목코드를 잘못 입력했습니다.

 

원하는 항목을 입력하세요 : 96

종목이름 : samsung

종목코드 : 111

==========

96 : 관심종목 추가

97 : 관심종목 수정

98 : 관심종목 삭제

99 : 종료

종목코드 번호 : 선택한 종목 주가정보 조회

==========

 

만약 삼성전자 주가정보를 조회하면 에러가 발생됩니다 (AttributeError).

 

런타임 에러가 발생되면 바로 에러표시를 하면서 코드가 멈추게 되는데, 오류처리를 하여 발생한 오류표시를 하고 계속 코드는 동작합니다.

 

원하는 항목을 입력하세요 : 0

----------

주식종목코드 오류

----------

==========

 

그러면 삼성전자 종목코드를 수정하면 아래와 같이 수정됨을 알 수 있습니다.

 

원하는 항목을 입력하세요 : 97

종목항목번호 : 0

종목이름 : 삼성전자

종목코드 : 005930

==========

96 : 관심종목 추가

97 : 관심종목 수정

98 : 관심종목 삭제

99 : 종료

종목코드 번호 : 선택한 종목 주가정보 조회

==========

0  -  삼성전자 005930

==========

 

이제 런타임 오류도 문제없이 처리하고 잘못된 종목코드도 수정할 수 있게 되었습니다.

 

댓글 없음:

댓글 쓰기