VBA Уеб Scraping към Excel

⚡ Умно обобщение

Уеб скрапping с VBA extracпрехвърля данни от HTML уеб страници директно в Excel, използвайки автоматизация на Internet Explorer и Microsoft HTML библиотека с обекти за навигиране в сайт, четене на HTML таблица и записване на събраните стойности в клетки на работен лист.

  • 🧰 VBA автоматизация: VBA управлява Internet Explorer от Excel, за да зареди уеб страница и да прочете нейния HTML.
  • ???? Необходими справки: Microsoft Библиотека с HTML обекти и Microsoft Интернет контролите трябва да бъдат посочени в проекта.
  • 🌐 Метод за навигация: Методът Navigate отваря цел URL, а кодът чака, докато страницата е готова.
  • 🧱 Разбор на HTML таблици: getElementsByTagName чете таблицата, така че нейните редове и клетки да могат да бъдат прегледани в цикъл.
  • 📊 Записване в клетки: Събраните стойности се записват в клетки на работен лист, често зад бутон „Обновяване“.
  • 🤖 AI помощ: Инструментите с изкуствен интелект и вторите пилоти вече генерират скрапping кодирайте и адаптирайте селекторите, когато оформлението се промени.

VBA Уеб Scraping към Excel

Какво е Data Scrapeping?

Изтриване на данниping е техниката, която помага на бившияtracжеланата информация от HTML уеб страница в локален файл на вашата машина. Обикновено този локален файл е Excel файл, Word файл или друг Microsoft Приложение за Office. То помага за канализирането на важна информация от уеб страницата.

Изтриване на данниping става ценно в изследователски проект, който ежедневно зависи от интернет. За илюстрация, помислете за дневен търговец, който изпълнява макрос в Excel, за да извлече пазарна информация от финансов уебсайт в Excel таблица, използвайки VBA.

Как да подготвите макроса на Excel преди изтриване на данниping (Интернет Експлорър)

Има определени предварителни изисквания, които трябва да бъдат изпълнени върху макро файла на Excel, преди да започне изтриването на данни.ping процес.

Тези предпоставки са следните:

Стъпка 1) Отворете макрос, базиран на Excel, и достъпете опцията за разработчици на Excel.

Подгответе макроса на Excel преди изтриване на данниping използване на Internet Explorer

Стъпка 2) Изберете опцията Visual Basic под лентата за разработчици.

Подгответе макроса на Excel преди изтриване на данниping използване на Internet Explorer

Стъпка 3) Поставете нов модул.

Подгответе макроса на Excel преди изтриване на данниping използване на Internet Explorer

Стъпка 4) Инициализирайте нова подпрограма.

Sub test()
End Sub

Модулът би се получил по следния начин:

Подгответе макроса на Excel преди изтриване на данниping използване на Internet Explorer

Стъпка 5) Достъпете опцията „Справка“ в раздела „Инструменти“ и направете справка с Microsoft Библиотека с HTML обекти и Microsoft Интернет контрол.

Следните файлове трябва да бъдат препратени към модула, тъй като те помагат за отварянето на Internet Explorer и улесняват макроскриптирането.

препратка Microsoft HTML библиотека с обекти и интернет контроли

Сега Excel файлът е готов за взаимодействие с Internet Explorer. Следващата стъпка е да се включат макроскриптове, които улесняват изтриването на данни.ping в HTML.

Как да отворите Internet Explorer с помощта на Excel VBA

Стъпка 1) Инициализирайте променливата в подпрограмата, както е показано по-долу.

Sub test()
Dim ie As New InternetExplorer 
Dim doc As New HTMLDocument

Стъпка 2) За да отворите Internet Explorer с помощта на VBA, напишете ie.Visible = True и натиснете 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 "https://demo.guru99.com/test/web-table-element.php"
Do
DoEvents
Loop Until ie.readyState = READYSTATE_COMPLETE

Стъпка 2) Натиснете F5, за да изпълните макроса. Ще се отвори следната уеб страница, както е показано.

Отваряне на уебсайт в Internet Explorer с помощта на VBA

Сега макросът на Excel е готов да извърши scratch-ването.ping функции. Следващата стъпка показва как информацията може да бъдеtracизвлечено от 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 "https://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 документа в подпрограмата.

Стъпка 3) Инициализирайте елемента колекция, присъстващ в HTML документа.

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object
ie.Visible = True
ie.Navigate "https://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 листа с помощта на вложен цикъл, както е показано.

Sub test()
Dim ie As New InternetExplorer
Dim doc As New HTMLDocument
Dim ecoll As Object

ie.Visible = True
ie.Navigate "https://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 може да бъде инициализиран с помощта на атрибута Range или атрибута Cells на листа. За да се намали сложността на VBA скрипта, данните от колекцията се инициализират с атрибута Cells на Лист 1 в работната книга.

След като макроскриптът е готов, присвоете подпрограмата на бутон в Excel и излезте от VBA модула. Означете бутона като „Обновяване“ или друго подходящо име. В този пример бутонът е обозначен като „Обновяване“.

Изтриване на информация от уебсайт с помощта на VBA

Стъпка 5) Натиснете бутона „Обновяване“, за да получите резултата по-долу.

Изтриване на информация от уебсайт с помощта на VBA

Стъпка 6) Сравнете резултатите в Excel с резултатите в Internet Explorer.

Изтриване на информация от уебсайт с помощта на VBA

Въпроси и Отговори

Необходими са две препратки в редактора на VBA под Инструменти, Препратки: Microsoft Библиотека с HTML обекти и Microsoft Интернет контроли. Те позволяват на VBA да отваря Internet Explorer, да навигира до URLи прочетете HTML елементите на страницата.

Зависи от уебсайта. Много сайтове ограничават автоматизираното скрапване.ping в техните условия за ползване, така че първо ги прегледайте и избягвайте събирането на лични или защитени с авторски права данни. Scraping Публичните, разрешени данни за личен анализ обикновено са с по-нисък риск.

Internet Explorer е остарял, така че съвременните проекти използват Selenium VBA подход, който задвижва Chrome, Firefoxили Ръб. Selenium предлага поддръжка за множество браузъри и по-надеждно местоположение на елементи за текущи уебсайтове.

Да. Скрепери и копилоти, задвижвани от изкуствен интелект, могат да идентифицират полета с данни, да генериратtracкод и автоматично се адаптират към промените в оформлението. Моделите за машинно обучение също така анализират неструктурирани страници, намалявайки ръчното усилие за писане и поддържане на scraping скриптове.

Изкуственият интелект използва компютърно зрение и обработка на естествен език, за да разпознава таблици, цени и текст на страница, дори без фиксирани селектори. Този интелигентен пример...tracцията прави драскотиниping по-устойчив, когато структурата на уебсайта се промени.

Обобщете тази публикация с: