Веб-скрапінг за допомогою VBA
Що таке скрейпінг даних?
Збирання даних — це техніка, яка допомагає отримати потрібну інформацію з веб-сторінки HTML у локальний файл, наявний на вашій локальній машині. Зазвичай локальний файл може відповідати файлу Excel, Word або будь-якому іншому Microsoft офісний додаток. Це допомагає направляти важливу інформацію з веб-сторінки.
Збирання даних стає простим під час щоденної роботи над дослідницьким проектом, і такий проект повністю залежить від Інтернету та веб-сайту. Щоб додатково проілюструвати цю тему, візьмемо приклад денного трейдера, який запускає макрос Excel для отримання ринкової інформації з фінансового веб-сайту в таблицю Excel за допомогою VBA.
Як підготувати макрос Excel перед виконанням аналізу даних за допомогою Internet Explorer?
Існують певні передумови, які необхідно виконати для файлу макросу Excel, перш ніж приступати до процесу збирання даних у Excel.
Ці передумови такі: –
Крок 1) Відкрийте макрос на основі Excel і перейдіть до опції розробника excel.
Крок 2) Виберіть параметр Visual Basic на стрічці розробника.
Крок 3) Вставте новий модуль.
Крок 4) Ініціалізація нової підпрограми
Sub test() End sub
Модуль матиме такий результат: –
Крок 5) Перейдіть до опції посилання на вкладці інструментів і посилання Microsoft Бібліотека об'єктів HTML і Microsoft контроль інтернету.
Наступні файли мають бути посиланнями на модуль, оскільки він допомагає відкривати Internet Explorer і полегшує розробку сценаріїв макросів.
Тепер файл Excel готовий для взаємодії з Internet Explorer. Наступним кроком буде включення макрос-скриптів, які полегшуватимуть збирання даних у HTML.
Як відкрити Internet Explorer за допомогою Excel VBA?
Крок 1) Ініціалізуйте змінну в підпрограмах, як показано нижче
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument
Крок 2) Щоб відкрити Internet Explorer за допомогою VBA, напишіть тобто видимий=правдивий і натисніть F5.
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Ie.visible=true
Модуль виглядатиме так: –
Як відкрити веб-сайт в Internet Explorer за допомогою VBA?
Ось кроки для відкриття веб-сайту в Internet Explorer за допомогою VBA
Крок 1) Коли ви зможете отримати доступ до Internet Explorer за допомогою Excel VBA, наступним кроком буде доступ до веб-сайту за допомогою VBA. Цьому сприяє атрибут Navigate, де URL-адреса має передаватися як подвійні лапки в атрибуті. Виконайте наведені нижче дії.
Sub test() Dim, ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate"http://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE
Крок 2) – Натисніть F5, щоб виконати макрос. Буде відкрито наступну веб-сторінку, як показано
Тепер макрос Excel готовий до виконання функцій копіювання. Наступний крок покаже, як інформацію можна отримати з Internet Explorer за допомогою VBA.
Як отримати інформацію з веб-сайту за допомогою VBA?
Припустимо, денний трейдер хоче щодня отримувати доступ до даних із веб-сайту. Кожного разу, коли денний трейдер натискає кнопку, він повинен автоматично завантажувати ринкові дані в Excel.
На вищевказаному веб-сайті необхідно перевірити елемент і спостерігати, як структуровані дані.
Крок 1) Отримайте доступ до наведеного нижче вихідного коду 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>
Вихідний код буде таким: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "http://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document
Як видно, дані структуровані як одна таблиця HTML. Таким чином, щоб витягнути цілі дані з таблиці html, потрібно створити макрос, який збирає дані у формі колекції.
Потім колекція буде вставлена в Excel. Щоб досягти бажаних результатів, виконайте наведені нижче кроки: –
Крок 2) Ініціалізуйте документ Html у підпрограмі
Модуль VBA виглядатиме так: –
Крок 3) Ініціалізуйте елемент колекції, присутній у документі HTML
Модуль VBA виглядатиме так: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "http://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Крок 4) Ініціалізуйте клітинки аркуша Excel за допомогою вкладеного циклу, як показано
Модуль VBA виглядатиме так: –
Sub test() Dim ie As New InternetExplorer Dim doc As New HTMLDocument Dim ecoll As Object ie.Visible = True ie.navigate "http://demo.guru99.com/test/web-table-element.php" Do DoEvents Loop Until ie.readyState = READYSTATE_COMPLETE Set doc = ie.document Set ecoll = doc.getElementsByTagName("table")
Excel можна ініціалізувати за допомогою атрибута діапазону аркуша Excel або через атрибут клітинок аркуша Excel. Щоб зменшити складність сценарію VBA, дані колекції ініціалізуються атрибутом клітинок Excel аркуша 1, наявного в робочій книзі.
Коли сценарій макросу буде готовий, передайте та призначте підпрограму кнопці excel і вийдіть із модуля VBA. Позначте кнопку як оновити або будь-яку відповідну назву, яку можна ініціалізувати. У цьому прикладі кнопка ініціалізується як оновлення.
Крок 5) Натисніть кнопку оновлення, щоб отримати наведений нижче результат
Крок 6) Порівняйте результати в Excel з результатами Internet Explorer
Підсумки
- Збирання даних дозволяє користувачеві збирати лише ту інформацію, яку він хоче. Щоб знайти найкращі інструменти для цієї мети, подивіться на цей список інструментів веб-збирання, які можуть допомогти вам ефективно отримувати потрібну інформацію з різних веб-сайтів.
- Копіювання можна виконати за допомогою Internet Explorer.
- Процес сканування відбувається повільніше у випадку Internet Explorer; однак він забезпечує бажані результати для користувача.
- Збирання слід виконувати з абсолютною обережністю та обережністю, оскільки це може пошкодити та вивести з ладу систему, яка використовується для очищення.