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

[심화방] VBA_심화_100제 #11 [ 셀레니움 Astable]

by 일등미노왕국 2023. 3. 13.

셀레니움으로 추출된 표는 KBO 홈페이지의 데이터를 추출한 내용이다.

웹의 데이터를 크롤링할때 우리는 table 태그 안에 tr태그와 td태그들을 For each 또는 For 순환문으로 적절하게 파씽하면서 크롤링을 해 왔다.

 

오늘 우리는 셀레니움 매소드 중에 AsTable 로 table 태그안에 데이터를 한번에 가져와서 ToExcel을 이용하여 한방에 셀에 뿌리는 것을 해보도록 하자.

 

공부할때는 힘들었는데 막상 풀어놓으려고 하니 별거 없다.

 

AsTable을 이용하려면 우선 표 형태의 데이터를 가지고 있는  table태그를 찾아야한다.

 

표를 감싸고 있는 Table 태그의 Class명이 [tData01 tt] 두개인데 본인은 여기서  tData01을 사용하였다.

 

Dim tbl As WebElement
Set tbl = Sel.FindElementByCss(".tData01")

tbl 변수를  Webelement로 설정하였고 Css Selector로 [tData01]를 tbl의 설정값으로 선언하였다.

 

tbl.AsTable.ToExcel ActiveSheet.[a4]

 선언한 tbl에 테이블태그의 값들을 모두 가져와서 반복문이 필요없이 ToExcel로 현재시트에 출력하는 코드이다.

 

기존에 했던 방식은 table 태그안의 tbody 태그들을 순환하였던 방식 이었는데, 어떤 수정없이 표의 내용을 그대로 가져오는 방식의 데이터를 가져와야 한다면 분명 훌륭하게 유용한 코드가 될 듯하다.

더보기
Sub KBOdata()

    Dim Sel As New Selenium.ChromeDriver
    Dim tbl As WebElement
    Dim strUrl$

    strUrl = "https://www.koreabaseball.com/Record/Player/HitterBasic/BasicOld.aspx?sort=HRA_RT"

   ' Sel.AddArgument "--headless"                                        '= 헤드리스모드
    Sel.Start "chrome"                                                  '= 크롬으로 진행
    Sel.Get strUrl                                                      '= Url 이동
    
    Set tbl = Sel.FindElementByCss(".tData01")                          '= Table 태그를 선언
    tbl.AsTable.ToExcel ActiveSheet.[a4]                                '= 테이블 태그의 내용을 엑셀로 변환해서 [a4]에 출력해라
    
    Haja_Format
    
End Sub

Function Haja_Format()

    With [a4].CurrentRegion
    
        .HorizontalAlignment = xlCenter
        .Borders.LineStyle = 1
        .AutoFit
    
    End With


End Function

심화방11.xlsm
0.03MB

댓글