티스토리 뷰

반응형

네이버 증권 페이지에서 시가총액 순으로 다양한 지표를 불러와서 원하는 데이터를 얻기 위한 스크랩핑 과정에서

발생한 에러 처리 내용 공유

 

하고 싶은 과제 : 네이버 증권에서 finance.naver.com//item/main.nhn?code='회사코드' 페이지에서

 > 최근 ROE, PER, PBR 값을 불러와서 내가 원하는 기준을 초과하거나 미만인 경우를 선별하여 회사 반환

 

 

실행코드

sub_thead = sub_soup.find("table", attrs={"class":"tb_type1 tb_num tb_type1_ifrs"}).find("thead").find_all("th", attrs={"scope":"col"})

 

 

 

KODEX 200 - 네이버 금융 : 네이버 금융

관심종목의 실시간 주가를 가장 빠르게 확인하는 곳

finance.naver.com

여기에서 KODEX, 맥쿼리인프라, TIGER, 롯데리츠, 티와이홀딩스, 제이알글로벌리츠 등 ETF 종목은 기업실적분석 데이터를 보여주지 않는다. 이에 따라 위의 코드를 통해 각 기업의 실적분석데이터를 불러오려고 하면 아래와 같은 에러메시지를 나타낸다. 중첩된 find 문 과정에서 앞에 발생한 find 결과에서 None을 반환함에 따라 이후 thead 에서 찾는 데이터를 찾을 수 없다는 메시지이다. 

Traceback (most recent call last):

  File "D:/develop/py_go/Python_test/kakao_test/stockList.py", line 134, in <module>

    sub_thead = sub_soup.find("table", attrs={"class":"tb_type1 tb_num tb_type1_ifrs"})\

AttributeError: 'NoneType' object has no attribute 'find'

 

Process finished with exit code 1

처음에는 무식한 방법으로 검색한 회사중 발생한 케이스를 제외하려 했지만, 경우의 수가 너무나 많았고 이런 비효율적인 방법은 정말 피하고 싶어서 return 값을 확인하여, 다음 find를 진행할 수 있도록 수정하였다. 

 

발생한 케이스 별 종목 제거

결과값 None 일 결우 이후 find 실행

if sub_thead is not None:
    sub_thead = sub_thead.find(
"thead").find_all("th", attrs={"scope":"col"})
else:
    continue

 

반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함