Интернет

Парсер сайтов и файлов (парсинг данных с сайта в Excel)

Структура программы «Парсер сайтов»

Надстройка Parser для Excel — простое и удобное решение для парсинга любых сайтов (интернет-магазинов, соцсетей, площадок объявлений) с выводом данных в таблицу Excel (формата XLS* или CSV), а также скачивания файлов.

Работа с HTML: поиск тегов (RegExp) и преобразование HTML в текст

В данной статье приведён код 2 функций, которые позволят вам найти на веб-странице нужные HTML теги,
и преобразовать HTML в текст

Особенность этого кода, - использование регулярных выражений (Regexp) для поиска в HTML

Эти функции лежат в основе моей надстройки «Парсер сайтов»

Пример использования:

' в переменной txt находится исходный код веб-страницы (целиком, или его часть)

' ищем div id="mod-lists", и берем его начинку (innerHTML)
' Индекс 1 после innerHTML означает, что если будет найдено несколько таких тегов, - макрос возьмет только первый
res = GetTags(txt, "div", "id", "mod-lists", "innerHTML 1")
 
 
' ищем ВСЕ теги span класса product (функция вернёт массив значений в переменную arr)
arr = Split(GetTags(txt, "span", "class", "product", "outerHTML"), ARSEP)
 
 
' ищем гиперссылку (тег a класса blue-link), и возвращаем атрибут href
link$ = GetTags(txt, "a", "class", "blue-link", "href")
 
 
' ищем ЛЮБОЙ ТЕГ класса price, и берем последний найденный (last), преобразовав его в текст (ConvertToText)
price = GetTags(txt, "any tag", "class", "price", "ConvertToText last")

Есть возможность удалять теги из HTML (параметр DeleteTags), а также использовать подстановочный символ * до или после значения атрибута.
Можно также выполнять поиск по маске для атрибутов:

' в переменной txt находится исходный код веб-страницы (целиком, или его часть)

' удаляем все div, где имя класса начинается с old
txt = GetTags(txt, "div", "class", "old*", "DeleteTags")
 
 
' ищем ВСЕ гиперссылки по маске /item/
links_array = Split(GetTags(txt, "a", "AttributesPattern", "*/item/*", "href"), ARSEP)

Функцией преобразования HTML в текст (ConvertHTMLtoText) можно воспользоваться отдельно (без функции GetTags)

Весь приведённый ниже код, скопируйте в отдельный стандартный модуль

Копирование таблицы Excel на сайт — конвертация в HTML

Надстройка предназначена для быстрой конвертации выделенного диапазона ячеек в HTML код для вставки на сайт.

При запуске надстройки, формируется панель инструментов (на ленте, на вкладке Надстройки)
с 2 кнопками: экспорт в HTML всей таблицы, или только выделенного диапазона ячеек

панель инструментов надстройки для экспорта таблиц в HTML

 

Файл надстройки, - во вложении к статье.

Авторизация на Яндексе с использованием WinHttpRequest

Приведённый ниже код выполняет авторизацию на Яндексе, отправляя GET и POST запрос

На время POST запроса отключается автоматический редирект, чтобы сохранить Cookies, переданные в ответе сервера

PS: Код предназначен для специалистов!
Я не готов отвечать на вопросы, почему у вас не получилось авторизоваться, и что делать с этим макросом дальше (как получать данные)

Эта функция нашла применение в универсальной программе для сбора данных с Яндекс.Маркет

Авторизация на сайте atsenergo.ru

Данный макрос выполняет 2 HTTP запроса (GET и POST) для авторизации на сайте atsenergo.ru
В случае успешной авторизации, функция возвращает идентификатор сессии,
который используется в дальнейших запросах для скачивания файлов.

Макрос представляется сайту браузером Google Chrome
Чтобы код сработал, надо задать правильные логин-пароль

Макрос опубликован в качестве примера использования объекта WinHttpRequest для работы с сайтами.

Пример программного управления надстройкой YandexMarket для поиска цен по разным регионам

В этой статье приведён пример кода для программного управления моими универсальными надстройками,
на примере надстройки для поиска цен в Яндекс.маркет

Sub FindPricesForAllSheets()
    On Error Resume Next: Err.Clear
    Const ADDIN_NAME$ = "YandexMarket"        ' задаем здесь кодовое имя надстройки

    Dim AddinFilename$, AddinPath$, msg$
    ' проверяем, запущена ли надстройка, пытаясь получить имя файла надстройки

Получение текущей даты и времени с сервера в интернете

Функция GetRealTime выполняет HTTP-запрос к заданному серверу,
и из заголовка Date ответа сервера берёт текущее время и дату.

Сделано на примере сервера Яндекса (их сайт почти всегда доступен, и работает очень быстро)

Функция полезна, когда надо получить реальную дату (а не ту, которая выставлена на компе), - например, для вычисления оставшегося времени использования trial-версии программы.

Пример использования:

Sub ВывестиТекущуюДатуИВремя()
    t = GetRealTime
    MsgBox t, vbInformation, "Текущее время (в Москве)"
 
    t = GetRealTime(6)        ' GMT + 6

Надстройка для добавления автообновляемых курсов доллара и евро в файл Excel

Надстройка предназначена для добавления в открытый файл Excel
скрытого листа с автообновляемым веб-запросом к сайту ЦБ РФ.

После добавления такого листа, в вашем файле можно использовать в формулах имена USD и EURO
для получения курсов соответствующих валют

(при желании, надстройку можно доработать, чтобы получать курсы других валют)

Интервал обновления данных: 30 минут

Скачивание файла с сайта с авторизацией

Пример макроса для скачивания файла с авторизацией.

Для его работы, надо подключить библиотеку Microsoft WinHTTP Services (version 5.1.) в меню Tools - References

Сначала выполняется POST-запрос для авторизации,
потом GET-запрос для скачивания файла

Поиск Вконтакте: программа поиска по новостям, с выводом результатов в Excel

Результаты поиска в соц.сети Вконтакте (vk.com) по новостям (вывод в таблицу Excel)

Программа выполняет поиск заданного текста в социальной сети Вконтакте (vk.com)

 

Исходными данными являются:

  • поисковый запрос (произвольная текстовая строка)
  • дата, до достижения которой нас интересуют найденные сообщения