크롤링_crawling

selenium 엔카 크롤링 (bot 감지 실행 안됨)

VBA 2023. 4. 1. 00:57

Dim driver As New Selenium.ChromeDriver 'sub안에서 실행하면 끝날때 자동 종료 되기 때문에 밖에서 실행시켜놓는다.

-------------------------------------------------------------------------


Sub 브라우저실행()
driver.Get " http://www.encar.com/dc/dc_carsearchlist.do?carType=kor&searchType=model&TG.R=A#!%7B%22action%22%3A%22(And.Hidden.N._.(C.CarType.Y._.(C.Manufacturer.%EC%A0%9C%EB%84%A4%EC%8B%9C%EC%8A%A4._.(C.ModelGroup.G80._.Model.G80.))))%22%2C%22toggle%22%3A%7B%7D%2C%22layer%22%3A%22%22%2C%22sort%22%3A%22ModifiedDate%22%2C%22page%22%3A1%2C%22limit%22%3A20%7D "
End Sub
-------------------------------------------------------------------------
Sub 데이터가져오기()
Dim i As Long
행 = 6
페이지 = 1
 Do
  For i = 1 To 21

    If driver.FindElementByCss("#sr_normal > tr:nth-child(" & i & ") ").CssValue("display") = "table-row" Then


     Cells(행, "b").Value = driver.FindElementByCss("#sr_normal > tr:nth-child(" & i & ") > td.inf > a").Text
     Cells(행, "c").Value = driver.FindElementByCss("#sr_normal > tr:nth-child(" & i & ") > td.inf > span.detail > span.yer").Text
     Cells(행, "g").Value = driver.FindElementByCss("#sr_normal > tr:nth-child(" & i & ") > td.prc_hs > strong").Text
     Cells(행, "h").Value = driver.FindElementByCss("#sr_normal > tr:nth-child(" & i & ") > td.inf > a").Attribute("href")
    
     행 = 행 + 1
    End If
  Next i
  페이지 = 페이지 + 1


  If 페이지 = 11 Then Exit Do


  driver.FindElementByCss("#pagination >span:nth-child(" & 페이지 & ") > a").Click   '다음페이지
  Application.Wait Now() + TimeSerial(0, 0, 2)  '대기시간
  
 Loop
End Sub

 

bot 감지로 현재 실행되지 않는다. FindElementByCss 와 FindElementsByCss "s"의 차이가 있고,  text 값, 속성값 가져오는 방법이 조금 다르다. 다음페이지 넘어갈때 click을 직접 입력한다.