VBA Уеб Scraping към Excel
⚡ Умно обобщение
Уеб скрапping с VBA extracпрехвърля данни от HTML уеб страници директно в Excel, използвайки автоматизация на Internet Explorer и Microsoft HTML библиотека с обекти за навигиране в сайт, четене на HTML таблица и записване на събраните стойности в клетки на работен лист.
Какво е Data Scrapeping?
Изтриване на данниping е техниката, която помага на бившияtracжеланата информация от HTML уеб страница в локален файл на вашата машина. Обикновено този локален файл е Excel файл, Word файл или друг Microsoft Приложение за Office. То помага за канализирането на важна информация от уеб страницата.
Изтриване на данниping става ценно в изследователски проект, който ежедневно зависи от интернет. За илюстрация, помислете за дневен търговец, който изпълнява макрос в Excel, за да извлече пазарна информация от финансов уебсайт в Excel таблица, използвайки VBA.
Как да подготвите макроса на Excel преди изтриване на данниping (Интернет Експлорър)
Има определени предварителни изисквания, които трябва да бъдат изпълнени върху макро файла на Excel, преди да започне изтриването на данни.ping процес.
Тези предпоставки са следните:
Стъпка 1) Отворете макрос, базиран на Excel, и достъпете опцията за разработчици на Excel.
Стъпка 2) Изберете опцията Visual Basic под лентата за разработчици.
Стъпка 3) Поставете нов модул.
Стъпка 4) Инициализирайте нова подпрограма.
Sub test() End Sub
Модулът би се получил по следния начин:
Стъпка 5) Достъпете опцията „Справка“ в раздела „Инструменти“ и направете справка с Microsoft Библиотека с HTML обекти и Microsoft Интернет контрол.
Следните файлове трябва да бъдат препратени към модула, тъй като те помагат за отварянето на Internet Explorer и улесняват макроскриптирането.
Сега 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 с помощта на 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, за да изпълните макроса. Ще се отвори следната уеб страница, както е показано.
Сега макросът на 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 модула. Означете бутона като „Обновяване“ или друго подходящо име. В този пример бутонът е обозначен като „Обновяване“.
Стъпка 5) Натиснете бутона „Обновяване“, за да получите резултата по-долу.
Стъпка 6) Сравнете резултатите в Excel с резултатите в Internet Explorer.












