Selenium Учебное пособие по VBA Excel: пример парсинга веб-страниц Chrome
Что такое очистка данных с использованием селена?
Selenium можно классифицировать как инструмент автоматизации, который облегчает извлечение информации из HTML-страниц для выполнения веб-скрапинга с использованием Google Chrome.
Как подготовить макрос Excel перед выполнением очистки данных с помощью Selenium?
Существуют определенные предварительные условия, которые необходимо выполнить с файлом макроса Excel, прежде чем приступить к процессу очистки данных в Excel.
Эти предпосылки заключаются в следующем: –
Шаг 1) Откройте макрос на основе Excel и получите доступ к опции Excel для разработчика.
Шаг 2) Выберите параметр Visual Basic на ленте «Разработчик».
Шаг 3) Вставьте новый модуль.
Шаг 4) Инициализируйте новую подпрограмму и назовите ее test2.
Sub test2() End sub
Ниже приведены результаты модуля:
Шаг 5) Доступ к опции справки на вкладке инструментов и ссылке. Selenium библиотека типов. Следующие библиотеки должны быть связаны с модулем, поскольку он помогает открывать Google Chrome и облегчает разработку макроскриптов.
Теперь файл 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, следующим шагом будет включение доступа к веб-сайту с помощью 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 готов к выполнению задач очистки. Следующий шаг покажет, как можно извлечь информацию, применяя селен и 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 будет выглядеть следующим образом: –
Шаг 3) Как только макрос-скрипт будет готов, передайте и назначьте подпрограмму кнопку Excel и выйдите из модуля VBA. Назовите кнопку «Обновить» или любое подходящее имя, которое можно было бы ей инициализировать. В этом примере кнопка инициализируется как обновление.
Шаг 4) Нажмите кнопку обновления, чтобы получить указанный ниже результат.
Шаг 5) Сравните результаты в Excel с результатами в Google Chrome.
Резюме
- Selenium можно классифицировать как инструмент автоматизации, который облегчает извлечение информации из HTML-страниц для выполнения веб-скрапинга с использованием Google Chrome.
- Парсинг в Интернете следует выполнять осторожно.
- Обычно сбор информации противоречит условиям веб-сайта.
- Когда очистка выполняется через селен, он обеспечивает поддержку нескольких браузеров.
- Другими словами, скребок может выполнять аналогичные задачи по очистке Firefox, Internet Explorer, а также.