Учебное пособие по 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

Фоллоwing будут результаты в модуле: –

Подготовьте макрос Excel перед выполнением очистки данных

Шаг 5) Получите доступ к опции ссылки на вкладке инструментов и обратитесь к библиотеке типов Selenium. Следующееwing Библиотеки должны быть связаны с модулем, поскольку они помогают открывать 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.

Фоллоwing будет код.

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-адрес должен передаваться как double кавычки в атрибуте.

Следуйте за фоллоwing шаги, как показано

Модуль будет выглядеть следующим образом: –

Открыть сайт в Google Chrome с помощью VBA

Нажмите F5, чтобы выполнить макрос.

Фоллоwing веб-страница будет открыта в 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 + 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 и соответствующие данные, связанные с таблицей. Выполните следующееwing задачи, как показано: –

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

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. Чтобы уменьшить комplexВ сценарии 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.
  • Парсинг в Интернете следует выполнять осторожно.
  • Обычно сбор информации противоречит условиям веб-сайта.
  • Когда очистка выполняется через селен, он обеспечивает поддержку нескольких браузеров.
  • Иными словами, scraper может выполнять аналогичные задачи по очистке Firefox, Internet Explorer, а также.