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












