Веб-скрапінг за допомогою VBA

Що таке скрейпінг даних?

Збирання даних — це техніка, яка допомагає отримати потрібну інформацію з веб-сторінки HTML у локальний файл, наявний на вашій локальній машині. Зазвичай локальний файл може відповідати файлу Excel, Word або будь-якому іншому Microsoft офісний додаток. Це допомагає направляти важливу інформацію з веб-сторінки.

Збирання даних стає простим під час щоденної роботи над дослідницьким проектом, і такий проект повністю залежить від Інтернету та веб-сайту. Щоб додатково проілюструвати цю тему, візьмемо приклад денного трейдера, який запускає макрос Excel для отримання ринкової інформації з фінансового веб-сайту в таблицю Excel за допомогою VBA.

Як підготувати макрос Excel перед виконанням аналізу даних за допомогою Internet Explorer?

Існують певні передумови, які необхідно виконати для файлу макросу Excel, перш ніж приступати до процесу збирання даних у Excel.

Ці передумови такі: –

Крок 1) Відкрийте макрос на основі Excel і перейдіть до опції розробника excel.

Підготуйте макрос Excel перед виконанням сканування даних за допомогою Internet Explorer

Крок 2) Виберіть параметр Visual Basic на стрічці розробника.

Підготуйте макрос Excel перед виконанням сканування даних за допомогою Internet Explorer

Крок 3) Вставте новий модуль.

Підготуйте макрос Excel перед виконанням сканування даних за допомогою Internet Explorer

Крок 4) Ініціалізація нової підпрограми

Sub test()
End sub

Модуль матиме такий результат: –

Підготуйте макрос Excel перед виконанням сканування даних за допомогою Internet Explorer

Крок 5) Перейдіть до опції посилання на вкладці інструментів і посилання Microsoft Бібліотека об'єктів HTML і Microsoft контроль інтернету.

Наступні файли мають бути посиланнями на модуль, оскільки він допомагає відкривати Internet Explorer і полегшує розробку сценаріїв макросів.

Підготуйте макрос Excel перед виконанням сканування даних за допомогою 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 за допомогою Excel VBA

Відкрийте Internet Explorer за допомогою Excel VBA

Як відкрити веб-сайт в 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, щоб виконати макрос. Буде відкрито наступну веб-сторінку, як показано

Відкрийте веб-сайт у Internet Explorer за допомогою VBA

Тепер макрос 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. Позначте кнопку як оновити або будь-яку відповідну назву, яку можна ініціалізувати. У цьому прикладі кнопка ініціалізується як оновлення.

Отримайте інформацію з веб-сайту за допомогою VBA

Крок 5) Натисніть кнопку оновлення, щоб отримати наведений нижче результат

Отримайте інформацію з веб-сайту за допомогою VBA

Крок 6) Порівняйте результати в Excel з результатами Internet Explorer

Отримайте інформацію з веб-сайту за допомогою VBA

Підсумки

  • Збирання даних дозволяє користувачеві збирати лише ту інформацію, яку він хоче. Щоб знайти найкращі інструменти для цієї мети, подивіться на цей список інструментів веб-збирання, які можуть допомогти вам ефективно отримувати потрібну інформацію з різних веб-сайтів.
  • Копіювання можна виконати за допомогою Internet Explorer.
  • Процес сканування відбувається повільніше у випадку Internet Explorer; однак він забезпечує бажані результати для користувача.
  • Збирання слід виконувати з абсолютною обережністю та обережністю, оскільки це може пошкодити та вивести з ладу систему, яка використовується для очищення.