반응형

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

 

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

 

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

 

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
==========

 

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

반응형
Posted by HLIFEINFO
,