Selenium Навчальний посібник VBA Excel: приклад Chrome Web Scraping

Що таке сканування даних за допомогою селену?

Selenium можна класифікувати як інструмент автоматизації, який полегшує збирання інформації з веб-сторінок HTML для виконання веб-збирання за допомогою Google Chrome.

Як підготувати макрос 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) Щоб відкрити google chrome за допомогою selenium і 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 "http://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 + Я

<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 як колекцію. Драйвер selenium має знайти інформацію заголовка таблиці 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) Далі драйвер selenium знаходить дані таблиці, використовуючи подібний підхід, як згадано вище. Ви повинні написати такий код: –

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 можна ініціалізувати за допомогою атрибута Range аркуша Excel або атрибута cell аркуша Excel. Щоб зменшити складність сценарію VBA, дані колекції ініціалізуються атрибутом клітинок Excel аркуша 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"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) Порівняйте результати в excel з результатами google chrome

Отримайте інформацію з веб-сайту за допомогою VBA

Підсумки

  • Selenium можна класифікувати як інструмент автоматизації, який полегшує збирання інформації з веб-сторінок HTML для виконання веб-збирання за допомогою Google Chrome.
  • Збирання в Інтернеті слід проводити обережно.
  • Зазвичай видалення інформації суперечить умовам веб-сайту.
  • Коли сканування виконується через selenium, воно пропонує підтримку кількох браузерів.
  • Іншими словами, скребок може виконувати подібні завдання зіскрібання Firefox, а також Internet Explorer.