Selenium Учебное пособие по VBA Excel: пример парсинга веб-страниц Chrome

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

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 "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 + Я

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

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

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"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

Резюме

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