심화방 #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월까지 셀레니움을 다룰려고 한다. 본인도 아직 잘 모르던 깊은 세계까지 들어가려 하니 본인의 런닝메이트가 되주길 희망한다.
'VBA > 엑사남_심화방' 카테고리의 다른 글
[심화방] VBA_심화_100제 #6 [ 스크린샷 ] (4) | 2023.01.09 |
---|---|
[심화방] VBA_심화_100제 #5 [ Sk엔카 크롤링 ] (0) | 2023.01.06 |
[심화방] VBA_심화_100제 #4 [ 네이버 박스오피스 ] (0) | 2023.01.05 |
[심화방] VBA_심화_100제 #3 [ 네이버 주식 종목토론방 ] (0) | 2022.12.30 |
[심화방] VBA_심화_100제 #2 [ 네이버 뉴스 ] (0) | 2022.12.26 |
댓글