Selenium Урок за VBA Excel: Пример за извличане на уеб в Chrome
Какво е Data Scraping с помощта на селен?
Selenium може да се класифицира като инструмент за автоматизация, който улеснява извличането на информация от HTML уеб страниците за извършване на извличане на уеб с помощта на google chrome.
Как да подготвите Macro на Excel, преди да изпълните Data Scraping с помощта на Selenium?
Има определени предпоставки, които трябва да бъдат изпълнени върху файла с макроси на excel, преди да влезете в процеса на изчерпване на данни в excel.
Тези предпоставки са както следва: –
Стъпка 1) Отворете базиран на Excel макрос и отворете опцията за разработчици на excel.
Стъпка 2) Изберете опцията Visual Basic под лентата за програмисти.
Стъпка 3) Поставете нов модул.
Стъпка 4) Инициализирайте нова подпрограма и я наименувайте като test2.
Sub test2() End sub
Резултатите в модула ще бъдат следните: –
Стъпка 5) Осъществете достъп до опцията за справка под раздела с инструменти и справка Selenium библиотека с типове. Следните библиотеки трябва да бъдат препратени към модула, тъй като той помага при отварянето на Google Chrome и улеснява разработването на макро скриптове.
Сега 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, следващата стъпка ще бъде да включите достъпа до уебсайт с помощта на 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 е готов по отношение на изпълнението на задачите за изтриване. Следващата стъпка ще покаже как информацията може да бъде извлечена чрез прилагане на селен и 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 ще изглежда по следния начин: –
Стъпка 3) След като макрос скриптът е готов, преминете и задайте подпрограмата към бутона на excel и излезте от модула на VBA. Етикетирайте бутона като опресняване или всяко подходящо име, което може да бъде инициализирано към него. За този пример бутонът се инициализира като опресняване.
Стъпка 4) Натиснете бутона за опресняване, за да получите посочения по-долу резултат
Стъпка 5) Сравнете резултатите в excel с резултатите от google chrome
Oбобщение
- Selenium може да се класифицира като инструмент за автоматизация, който улеснява извличането на информация от HTML уеб страниците за извършване на извличане на уеб с помощта на google chrome.
- Изстъргването в интернет трябва да се извършва внимателно.
- Обикновено е против условията на уебсайта изтриването на информация.
- Когато изтриването се извършва чрез селен, то предлага поддръжка на множество браузъри.
- С други думи, скреперът може да изпълнява подобни задачи на изстъргване Firefox, както и Internet Explorer.