본문 바로가기
VBA/엑사남_심화방

[심화방] VBA_심화_100제 #1 [ 네이버 주식 현재가 ]

by 일등미노왕국 2022. 12. 25.

심화방 #1 네이버 주식 현재가 가져오기

https://www.youtube.com/watch?v=0hEBKX0jopY 

엑사남님이 이미 강의 하신 내용을 셀레니움으로 변경해서 풀어보는 숙제를 해보았다.

우린 언제가처럼 또 이를 해낼것이다.

크롬 개발자 도구에서 간단하게 확인하는 법은 이렇다..

본인도 이번에 안 사실이다. 이렇게 안하면 값을 테스트 할때마다 셀레니움은 처음부터 다시 돌려야 하기 때문에 여간 불편한것이 아니다. 이건 이번에 준빠님이 가르쳐주셨다.

span 자식태그가 아닌 부모 태그인 em 태그에서 이너텍스트만 추출할 수도 있다.

세로로 문자가 나오는 이유는 각 문자마다 [/n] 개행문자가 있기 때문이어서 디버깅 모드에서 replace 까지 할 필요는 없지만 저렇게 개행문자를 없애 버리면 우리가 원하는 현재가를 추출하게 된다.

 

우리는 console 창에서 우리가 사용하려는 태그가 맞는지 안맞는지 확인만 하면 되니까 사실 이렇게 까지 쓰는건 선을 넘는거 일지도 모르지만 웹은 결국 자바스크립트를 알아야 하기 때문에 이번에 같이 공부하면서 하나하나 써보려고 한다.

 

* 주의 할것은 콘솔창에서는 innertext지만 셀레니움 에서는 text 이다.

더보기
Sub 크롤링()

    Dim html As Object: Set html = CreateObject("htmlfile")
    Dim Sel As New Selenium.WebDriver
    Dim strurl$: strurl = "https://finance.naver.com/item/main.nhn?code="
    Dim rngAll As Range: Set rngAll = [g8:g16]
    Dim rngA As Range
    Dim str$
    Dim Nodes As Object
    Dim span As Object
    
    For Each rngA In rngAll
       
        Set Nodes = html.getElementsByTagName("em")

         Sel.AddArgument "--headless"                  '= 헤드리스 모드
         Sel.Start "chrome"                            '= 크롬으로 진행
         Sel.Get strurl & rngA                         '= 네이버 증권 + 종목코드

         Set Nodes = Sel.FindElementByCss(".no_today>em")
                                                       '= 추출하려는 태그를 nodes로 선언

         rngA.Next = Replace(Nodes.Text, Chr(10), "")
                                                       '= 현재가를 출력
                                                
    Next rngA
    
    MsgBox "현재가 출력을 완료했습니다"
         
End Sub

무조건 함께 해보길 희망한다.

2023년 1월까지 셀레니움을 다룰려고 한다. 본인도 아직 잘 모르던 깊은 세계까지 들어가려 하니  본인의 런닝메이트가 되주길 희망한다.

 

셀레니움_1(현재가).xlsm
0.03MB

댓글