Selenium Урок за VBA Excel: Пример за извличане на уеб в Chrome

Какво е Data Scraping с помощта на селен?

Selenium може да се класифицира като инструмент за автоматизация, който улеснява извличането на информация от HTML уеб страниците за извършване на извличане на уеб с помощта на google chrome.

Как да подготвите Macro на Excel, преди да изпълните Data Scraping с помощта на 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) За да отворите google chrome с помощта на селен и VBA, напишете 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

Как да отворите уебсайт в Google Chrome с помощта на VBA?

След като имате достъп до google chrome с помощта на VBA, следващата стъпка ще бъде да включите достъпа до уебсайт с помощта на VBA. Това се улеснява от функцията get, при която URL адресът трябва да премине като двойни кавички в атрибута.

Следвайте следните стъпки, както са показани

Модулът ще изглежда по следния начин:

Отворете уебсайта в Google Chrome Използване на VBA

Натиснете 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

Отворете уебсайта в Google Chrome Използване на VBA

Сега макросът на excel е готов по отношение на изпълнението на задачите за изтриване. Следващата стъпка ще покаже как информацията може да бъде извлечена чрез прилагане на селен и VBA.

Как да изтриете информация от уебсайт с помощта на VBA?

Да предположим, че дневният търговец иска да има достъп до данните от уебсайта ежедневно. Всеки път, когато дневният търговец натисне бутона за щракване, той трябва автоматично да изтегли пазарните данни в Excel.

От горния уебсайт би било необходимо да се провери елемент и да се наблюдава как са структурирани данните. Достъп до изходния код на HTML по-долу, като натиснете control + 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) Формулирайте for цикъл, който преминава през информацията на HTML заглавката като колекция. Драйверът на селен трябва да намери информацията за заглавката на 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 "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) След това драйверът на селен ще намери данните от таблицата, използвайки подобен подход, както беше споменато по-горе. Трябва да напишете следния код: –

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 ще изглежда по следния начин: –

Екселът може да се инициализира чрез атрибута Range на листа на Excel или чрез атрибута клетки на листа на Excel. За да се намали сложността на скрипта VBA, данните за колекцията се инициализират към атрибута клетки на excel на лист 2, присъстващ в работната книга. Освен това, текстовият атрибут помага за получаване на текстова информация, поставена под 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 ще изглежда по следния начин: –

Изтриване на информация от уебсайт с помощта на VBA

Стъпка 3) След като макрос скриптът е готов, преминете и задайте подпрограмата към бутона на excel и излезте от модула на VBA. Етикетирайте бутона като опресняване или всяко подходящо име, което може да бъде инициализирано към него. За този пример бутонът се инициализира като опресняване.

Изтриване на информация от уебсайт с помощта на VBA

Стъпка 4) Натиснете бутона за опресняване, за да получите посочения по-долу резултат

Изтриване на информация от уебсайт с помощта на VBA

Стъпка 5) Сравнете резултатите в excel с резултатите от google chrome

Изтриване на информация от уебсайт с помощта на VBA

Oбобщение

  • Selenium може да се класифицира като инструмент за автоматизация, който улеснява извличането на информация от HTML уеб страниците за извършване на извличане на уеб с помощта на google chrome.
  • Изстъргването в интернет трябва да се извършва внимателно.
  • Обикновено е против условията на уебсайта изтриването на информация.
  • Когато изтриването се извършва чрез селен, то предлага поддръжка на множество браузъри.
  • С други думи, скреперът може да изпълнява подобни задачи на изстъргване Firefox, както и Internet Explorer.