Selenium Урок за VBA и Excel (Chrome Web Scrap)ping)
⚡ Умно обобщение
Selenium VBA в Excel автоматизира Google Chrome за извличане на данни от HTML уеб страници, използвайки Selenium библиотека с типове и методи на WebDriver за отваряне на сайт, намиране на елементи от таблица по клас и етикет и записване на резултатите в клетки на работен лист.

Какво е Data Scrapeping Използването на Selenium?
Selenium е инструмент за автоматизация, който улеснява скрапванетоping информация от HTML уеб страници, извършване на уеб scrapingping с Google ChromeВ Excel, Selenium Библиотеката с типове позволява на VBA да управлява истински браузър вместо остарелия енджин на Internet Explorer.
Как да подготвите макроса на Excel преди изтриване на данниping Използването на Selenium
Има определени предварителни изисквания, които трябва да бъдат изпълнени върху макро файла на Excel, преди да започне изтриването на данни.ping процес.
Тези предпоставки са следните:
Стъпка 1) Отворете макрос, базиран на Excel, и достъпете опцията за разработчици на Excel.
Стъпка 2) Изберете опцията Visual Basic под лентата за разработчици.
Стъпка 3) Поставете нов модул.
Стъпка 4) Инициализирайте нова подпрограма и я наименувайте test2.
Sub test2() End Sub
Резултатът в модула ще бъде следният:
Стъпка 5) Достъпете опцията „Справка“ в раздела „Инструменти“ и направете справка с Selenium Библиотека с типове. Тази библиотека помага за отварянето Google Chrome и улеснява писането на макроси.
Сега Excel файлът е готов за взаимодействие с браузъра. Следващата стъпка е да се включи макроскрипт, който улеснява изтриването на данни.ping в HTML.
Как да отворите Google Chrome Използване на VBA
Ето стъпките за отваряне Google Chrome използвайки VBA.
Стъпка 1) Декларирайте и инициализирайте променливите в подпрограмата, както е показано по-долу.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer
Стъпка 2) Да отвориш Google Chrome използвайки Selenium и VBA, напишете драйвер. Стартирайте „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
След като имате достъп Google Chrome използвайки VBA, следващата стъпка е достъп до уебсайт чрез VBA. Това се улеснява от функцията Get, където URL се предава като двойни кавички.
Модулът би изглеждал по следния начин:
Натиснете F5, за да изпълните макроса. Следната уеб страница ще се отвори в Google Chrome както е показано.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer driver.Start "Chrome" driver.Get "https://demo.guru99.com/test/web-table-element.php" Application.Wait Now + TimeValue("00:00:20") End Sub
Сега макросът на Excel е готов да извърши scratch-ването.ping задачи. Следващата стъпка показва как информацията може да бъде обработенаtracчрез прилагане Selenium и VBA.
Как да извлечете информация от уебсайт с помощта на VBA
Да предположим, че дневният трейдър иска да има достъп до данните от уебсайта ежедневно. Всеки път, когато щракне върху бутона, пазарните данни трябва автоматично да се изтеглят в Excel.
От горепосочения уебсайт е необходимо да се инспектира елемент и да се наблюдава как са структурирани данните. Достъп до изходния код на HTML по-долу, като натиснете Control + Shift + Аз.
<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 таблицата, трябва да проектирате макрос, който извлича информацията от заглавката и съответните данни, свързани с таблицата. Изпълнете задачите по-долу.
Стъпка 1) Формулирайте For цикъл, който преминава през информацията от HTML заглавката като колекция. Selenium Драйверът локализира информацията в заглавката, използвайки методите FindElementByClass() и FindElementByTag(), както е показано.
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://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) След това Selenium Драйверът локализира данните от таблицата, използвайки подобен подход. Напишете следния код:
Sub test2() Dim driver As New WebDriver Dim rowc, cc, columnC As Integer rowc = 2 Application.ScreenUpdating = False driver.Start "chrome" driver.Get "https://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
Excel може да бъде инициализиран с помощта на атрибута Range или атрибута Cells на листа. За да се намали сложността на VBA скрипта, данните от колекцията се инициализират с атрибута Cells на Лист 2 в работната книга. Атрибутът 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 "https://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 модулът би изглеждал така:
Стъпка 3) След като макроскриптът е готов, присвоете подпрограмата на бутон в Excel и излезте от VBA модула. Означете бутона като „Обновяване“ или друго подходящо име. В този пример бутонът е обозначен като „Обновяване“.
Стъпка 4) Натиснете бутона „Обновяване“, за да получите резултата по-долу.
Стъпка 5) Сравнете резултатите в Excel с резултатите в Google Chrome.












