Selenium VBA Excel 튜토리얼: Chrome 웹 스크래핑 예

셀레늄을 이용한 데이터 스크래핑이란 무엇입니까?

Selenium 구글 크롬을 활용해 웹 스크래핑을 수행하기 위해 HTML 웹 페이지에서 정보를 스크래핑하는 자동화 도구로 분류될 수 있습니다.

데이터 스크래핑을 수행하기 전에 Excel 매크로를 준비하는 방법 Selenium?

Excel에서 데이터 스크래핑 프로세스를 시작하기 전에 Excel 매크로 파일에 대해 수행해야 하는 특정 전제 조건이 있습니다.

이러한 전제 조건은 다음과 같습니다: –

단계 1) Excel 기반 매크로를 열고 Excel의 개발자 옵션에 액세스하세요.

데이터 스크래핑을 수행하기 전에 Excel 매크로 준비

단계 2) 개발자 리본에서 Visual Basic 옵션을 선택합니다.

데이터 스크래핑을 수행하기 전에 Excel 매크로 준비

단계 3) 새 모듈을 삽입합니다.

데이터 스크래핑을 수행하기 전에 Excel 매크로 준비

단계 4) 새 서브루틴을 초기화하고 이름을 test2로 지정합니다.

Sub test2()
End sub

모듈의 결과는 다음과 같습니다. –

데이터 스크래핑을 수행하기 전에 Excel 매크로 준비

단계 5) 도구 탭 및 참조 아래의 참조 옵션에 액세스하세요. Selenium 유형 라이브러리. 다음 라이브러리는 모듈에 참조되어야 하며, 이는 Google Chrome을 여는 데 도움이 되고 매크로 스크립팅 개발을 용이하게 합니다.

데이터 스크래핑을 수행하기 전에 Excel 매크로 준비

이제 Excel 파일이 Internet Explorer와 상호 작용할 준비가 되었습니다. 다음 단계는 HTML에서 데이터 스크래핑을 용이하게 하는 매크로 스크립트를 통합하는 것입니다.

여는 방법 Google Chrome VBA를 사용하시나요?

여기를 여는 단계가 있습니다. Google Chrome VBA를 사용하여

단계 1) 아래에 표시된 대로 서브루틴에서 변수를 선언하고 초기화합니다.

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

단계 2) Selenium과 VBA를 사용하여 Google Chrome을 열려면 driver.start "chrome"을 작성하고 누릅니다. F5.

코드는 다음과 같습니다.

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Application.Wait Now+Timevalue("00:00:20")
End sub

모듈의 결과는 다음과 같습니다. –

엽니다 Google Chrome VBA 사용

VBA를 사용하여 Google 크롬에서 웹사이트를 여는 방법은 무엇입니까?

VBA를 사용하여 Google Chrome에 액세스할 수 있게 되면 다음 단계는 VBA를 사용하여 웹사이트에 액세스하는 것입니다. 이는 get 함수를 통해 가능하며, 여기서 URL은 속성에서 큰따옴표로 전달해야 합니다.

표시된 대로 다음 단계를 따르세요.

모듈은 다음과 같습니다: –

다음에서 웹사이트 열기 Google Chrome VBA 사용

F5 키를 눌러 매크로를 실행합니다.

다음 웹페이지는 구글 크롬에서 다음과 같이 열립니다.

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer
Driver.start "Chrome"
Driver.get "http://demo.guru99.com/test/web-table-element.php"
Application.Wait Now+Timevalue("00:00:20")
End sub

다음에서 웹사이트 열기 Google Chrome VBA 사용

이제 스크래핑 작업을 수행하기 위한 엑셀 매크로가 준비되었습니다. 다음 단계에서는 셀레늄과 VBA를 적용하여 정보를 추출하는 방법을 보여줍니다.

VBA를 사용하여 웹사이트에서 정보를 긁어내는 방법은 무엇입니까?

데이 트레이더가 매일 웹사이트의 데이터에 액세스하기를 원한다고 가정해 보겠습니다. 데이 트레이더가 버튼을 누를 때마다 시장 데이터가 자동으로 Excel로 가져와집니다.

위 웹사이트에서 요소를 검사하고 데이터가 어떻게 구성되어 있는지 관찰해야 합니다. 컨트롤 +를 눌러 아래 HTML 소스 코드에 액세스하세요. Shift + I

<table class="datatable">
<thead>
<tr>
<th>Company</th>
<th>Group</th>
<th>Pre Close (Rs)</th>
<th>Current Price (Rs)</th>
<th>% Change</th>
</tr>

소스 코드는 다음과 같습니다: –

데이터가 단일 HTML 테이블로 구조화되어 있는 것을 볼 수 있습니다. 따라서 HTML 테이블에서 전체 데이터를 가져오려면 HTML 테이블의 헤더 정보와 테이블과 관련된 해당 데이터를 가져오는 매크로를 설계해야 합니다. 표시된 대로 다음 작업을 수행합니다. –

단계 1) HTML 헤더 정보를 컬렉션으로 실행하는 for 루프를 공식화합니다. 셀레늄 드라이버는 HTML 테이블의 헤더 정보를 찾아야 합니다. 이를 위해 FindElementByClass() 및 FindElementByTag() 메서드를 사용하여 표시된 대로 작업을 수행합니다.

VBA 모듈은 다음과 같습니다. –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get "http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th

단계 2) 다음으로, 셀레늄 드라이버는 위에서 언급한 것과 유사한 접근 방식을 사용하여 테이블 데이터를 찾습니다. 다음 코드를 작성해야 합니다. –

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

vba 모듈은 다음과 같습니다: –

Excel은 Excel 시트의 Range 속성이나 Excel 시트의 cells 속성을 통해 초기화할 수 있습니다. VBA 스크립트의 복잡성을 줄이기 위해, 컬렉션 데이터는 통합 문서에 있는 시트 2의 Excel cells 속성으로 초기화됩니다. 또한, text 속성은 HTML 태그 아래에 배치된 텍스트 정보를 가져오는 데 도움이 됩니다.

Sub test2()
Dim driver As New WebDriver
Dim rowc, cc, columnC As Integer
rowc = 2
Application.ScreenUpdating = False
driver.Start "chrome"
driver.Get"http://demo.guru99.com/test/web-table-element.php"
For Each th In driver.FindElementByClass("dataTable").FindElementByTag("thead").FindElementsByTag("tr")
cc = 1
For Each t In th.FindElementsByTag("th")
Sheet2.Cells(1, cc).Value = t.Text
cc = cc + 1
Next t
Next th
For Each tr In driver.FindElementByClass("dataTable").FindElementByTag("tbody").FindElementsByTag("tr")
columnC = 1
For Each td In tr.FindElementsByTag("td")
Sheet2.Cells(rowc, columnC).Value = td.Text
columnC = columnC + 1
Next td
rowc = rowc + 1
Next tr
Application.Wait Now + TimeValue("00:00:20")
End Sub

vba 모듈은 다음과 같습니다: –

VBA를 사용하여 웹 사이트에서 정보 스크랩

단계 3) 매크로 스크립트가 준비되면 서브루틴을 Excel 버튼에 전달하고 할당하고 VBA 모듈을 종료합니다. 버튼에 새로 고침 또는 초기화할 수 있는 적절한 이름으로 레이블을 지정합니다. 이 예에서는 버튼이 새로 고침으로 초기화됩니다.

VBA를 사용하여 웹 사이트에서 정보 스크랩

단계 4) 아래 언급된 출력을 얻으려면 새로 고침 버튼을 누르십시오.

VBA를 사용하여 웹 사이트에서 정보 스크랩

단계 5) 엑셀의 결과와 구글 크롬의 결과를 비교해보세요

VBA를 사용하여 웹 사이트에서 정보 스크랩

요약

  • Selenium 구글 크롬을 활용해 웹 스크래핑을 수행하기 위해 HTML 웹 페이지에서 정보를 스크래핑하는 자동화 도구로 분류될 수 있습니다.
  • 인터넷 스크래핑은 신중하게 수행되어야 합니다.
  • 정보를 긁어내는 것은 일반적으로 웹사이트의 약관에 위배됩니다.
  • 스크래핑이 셀레늄을 통해 수행되는 경우 여러 브라우저 지원이 제공됩니다.
  • 즉, 스크레이퍼는 다음을 통해 스크래핑하는 유사한 작업을 수행할 수 있습니다. Firefox, 인터넷 익스플로러도 마찬가지입니다.