Учебники

80) Excel VBA и Selenium

Что такое очистка данных с использованием селена?

Selenium может быть классифицирован как инструмент автоматизации, который облегчает удаление информации с веб-страниц HTML для выполнения очистки с использованием Google Chrome.

В этом уроке вы узнаете:

Как подготовить макрос Excel перед выполнением очистки данных с помощью Selenium?

Существуют определенные предварительные условия, которые необходимо выполнить для файла макроса Excel, прежде чем приступить к процессу очистки данных в Excel.

Эти предпосылки следующие:

Шаг 1) Откройте макрос на основе Excel и получите доступ к опции Excel для разработчика.

Шаг 2) Выберите опцию Visual Basic под лентой разработчика.

Шаг 3) Вставьте новый модуль.

Шаг 4) Инициализируйте новую подпрограмму и назовите ее test2.

Sub test2()
End sub

Ниже будут результаты в модуле: —

Step 5) Access the reference option under the tool tab and reference Selenium type library. The following libraries are to be referenced to the module as it helps in opening google chrome and facilitates the development of macro scripting.

Now the Excel file is ready to interact with the internet explorer. Next steps would be to incorporate a macro script that would facilitate data scraping in HTML.

How to Open Google Chrome using VBA?

Here, are step to open Google Chrome using VBA

Step 1) Declare and initialize the variables in the subroutine as displayed below

Sub test2()
Dim driver as new webdriver
Dim rowc, cc, columnC as integer

Step 2) To open google chrome using selenium and VBA, write driver.start «chrome» and press 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 "http://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 "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) Затем драйвер селена найдет данные таблицы, используя аналогичный подход, как упомянуто выше. Вы должны написать следующий код: —

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 или с помощью атрибута ячейки листа 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 будет выглядеть следующим образом:

Шаг 3) Как только макрос-скрипт будет готов, передайте и назначьте подпрограмму для кнопки Excel и выйдите из модуля VBA. Пометьте кнопку как обновление или любое подходящее имя, которое можно инициализировать. В этом примере кнопка инициализируется как обновление.

Шаг 4) Нажмите кнопку обновления, чтобы получить указанный ниже вывод

Шаг 5) Сравните результаты в Excel с результатами Google Chrome

Резюме:

  • Selenium может быть классифицирован как инструмент автоматизации, который облегчает удаление информации с веб-страниц HTML для выполнения очистки с использованием Google Chrome.
  • Соскоб в интернете должен выполняться аккуратно.
  • Обычно это противоречит условиям веб-сайта для очистки информации.
  • Когда очистка выполняется через селен, он предлагает поддержку нескольких браузеров.
  • Другими словами, скребок может выполнять аналогичные задачи очистки через Firefox, Internet Explorer.