본문 바로가기
● 크롤링, 자동화/BeautifulSoup

[잔재미코딩] 3. naver stock_select, 2차 필터하기

by 0ver-grow 2020. 2. 27.
반응형

링크

 

해외증시 : 네이버 금융

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

finance.naver.com


추가적으로 시도했던 크롤링>

 

출력대상을 담은 태그

각 출력대상

위 대상을 뽑고 싶은데 못 뽑음.

 

하단 코드는 다른 코드임


 

위 copy selector를 하단과 같이 요약해줘도 정상적으로 출력된다.

 

 

위처럼 붙어있는 상태로 나와서 구분하기 어렵다

이때는 copy element를 해준다.

그런데 첫번째 리스트와 2번쨰 리스트의 아이디가 다르다

span클래스와 em클래스가 다르다. 상승,하락에 따라 class가 달라진다

<li>
<a href="/world/sise.nhn?symbol=DJI@DJI&amp;fdtc=0" onclick="clickcr(this,'wst.dow','','',event)">다우산업</a>
<span class="dn">26,957.59</span>
<em class="bu_p bu_pdn">
<span class="blind">하락</span>
</em>
</li>


<li>
<a href="/world/sise.nhn?symbol=NAS@IXIC&amp;fdtc=0" onclick="clickcr(this,'wst.nasdaq','','',event)"> 나스닥</a>
<span class="up">8,980.78</span>
<em class="bu_p bu_pup">
<span class="blind">상승</span>
</em>
</li>

그리고 위와 같이 태그별로 분리한 뒤 어떻게 할지 생각해보자

 

select로 뽑은 데이터도 다시 find나 select로 2차 가공이 가능하다는 점을 이용하자

select

select는 리스트형태로 반환하기에 따로 .get_text()와 같은 변환이 안된다

find

반면 find는 list타입이 아닌 <class 'bs4.element.Tag'> 이며, .get_text()적용이  가능하기에 깔끔하게 정리할 수 있다.

하지만 위 처럼 태그는 같지만 클래스가 다른 경우, none이란 값으로 나온다.
고로 태그만 써준다.

그런데 신기한게, span만 입력했을 뿐인데 알아서 몇번째 span인지 인식한다..!
아마 앞쪽 span은 첫번쨰 span을 의미하고 그 다음은 그 다음순서의 span을 나타내는 듯 하다.

반응형