Меню Рубрики

Как написать парсер на vba

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

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

Особенность программы — очень гибкая настройка постобработки полученных данных (множество текстовых функций, всевозможные фильтры, перекодировки, работа с переменными, разбиение значения на массив и обработка каждого элемента в отдельности, вывод характеристик в отдельные столбцы, автоматический поиск цены товара на странице, поддержка форматов JSON и XML).

В парсере сайтов поддерживается авторизация на сайтах, выбор региона, GET и POST запросы, приём и отправка Cookies и заголовков запроса, получение исходных данных для парсинга с листа Excel, многопоточность (до 200 потоков), распознавание капчи через сервис RuCaptcha.com, работа через браузер (IE), кеширование, рекурсивный поиск страниц на сайте, сохранение загруженных изображений товара под заданными именами в одну или несколько папок, и многое другое.

Поиск нужных данных на страницах сайта выполняется в парсере путем поиска тегов и/или атрибутов тегов (по любому свойству и его значению). Специализированные функции для работы с HTML позволяют разными способами преобразовывать HTML-таблицы в текст (или пары вида название-значение), автоматически находить ссылки пейджера, чистить HTML от лишних данных.

За счёт тесной интеграции с Excel, надстройка Parser может считывать любые данные из файлов Excel, создавать отдельные листы и файлы, динамически формировать столбцы для вывода, а также использовать всю мощь встроенных в Excel возможностей.
Поддерживается также сбор данных из текстовых файлов (формата Word, XML, TXT) из заданной пользователем папки, а также преобразование файлов Excel из одного формата таблицы в другой (обработка и разбиение данных на отдельные столбцы)

В программе «Парсер сайтов» можно настроить обработку нескольких сайтов. Перед запуском парсинга (кнопкой на панели инструментов Excel) можно выбрать ранее настроенный сайт из выпадающего списка.

На видео рассказывается о работе с программой, и показан процесс настройки парсера интернет-магазина:

Дополнительные видеоинструкции, а также подробное описание функционала, можно найти в разделе Справка по программе

В программе можно настроить несколько парсеров (обработчиков сайтов).
Любой из парсеров настраивается и работает независимо от других.

Настройка программы, — дело не самое простое (для этого, надо хоть немного разбираться в HTML)

Если вам нужен готовый парсер, но вы не хотите разбираться с настройкой,
— закажите настройку парсера разработчику программы. Стоимость настройки под конкретный сайт — от 2000 рублей.
(настройка под заказ выполняется только при условии приобретения лицензии на надстройку «Парсер» (2700 руб)

Программа не привязана к конкретному файлу Excel.
Вы в настройках задаёте столбец с исходными данными (ссылками или артикулами),
настраиваете формирование ссылок и подстановку данных с сайта в нужные столбцы,
нажимаете кнопку, — и ваша таблица заполняется данными с сайта.

Программа «Парсер сайтов» может быть полезна для формирования каталога товаров интернет-магазинов,
поиска и загрузки фотографий товара по артикулам (если для получения ссылки на фото, необходимо анализировать страницу товара),
загрузки актуальных данных (цен и наличия) с сайтов поставщиков, и т.д. и т.п.

Можно попробовать разобраться с работой программы на примерах настроенных парсеров

Как скачать и протестировать программу

Для загрузки надстройки Parser воспользуйтесь кнопкой Скачать программу

Если не удаётся скачать надстройку, читайте инструкцию про антивирус

Если скачали файл, но он не запускается, читайте почему не появляется панель инструментов

Это полнофункциональная пробная (TRIAL) версия, у вас есть 10 дней бесплатного использования ,
в течение которых вы можете протестировать работу программы.

Этого вполне достаточно, чтобы всё настроить и проверить, используя раздел Справка по программе

Если вам понравится, как работает программа, вы можете Купить лицензию

Лицензия (для постоянного использования) стоит 2700 рублей .

В эту стоимость входит активация на 2 компьютера (вы сможете пользоваться программой и на работе, и дома).
Если нужны будут дополнительные активации, их можно будет в любой момент приобрести по 600 рублей за каждый дополнительный компьютер.

Комментарии

Здравствуйте.
Пересмотрите видеоинструкцию по программе.
На этапе тестирования нужно подставлять ссылку (из любой ячейки) в поле ИСХОДНОЕ ЗНАЧЕНИЕ в окне тестирования
(а не в параметр URL действия!)
В ходе работы (после запуска парсера), значения будут браться автоматически из ячеек.
А для теста нужно вручную подставлять исходную ссылку.

Здравствуйте, сейчас тестирую ваш парсер.
Возник вопрос при режиме парсера «брать данные с листа, из заданного столбца». Задал столбец, перешел в редакцию списка действий и выбрал действие «Загрузить ИСХОДНЫЙ КОД веб-страницы». При тестировании не загружает, ведь по логике парсер должен исходить из заданного столбца, чего не происходит.
Подставил первое значение с заданного столбца в URL — выдал результаты по 1му значению, остальное пустое при выводе данных на лист. Изменял кодировку — не получается. На фазе тестирования ничего не происходит. Какое действие нужно производить вместо «Загрузить ИСХОДНЫЙ КОД веб-страницы» ?
Основная задача получить прямые ссылки с облака, в заданном столбце ссылки на облако.

Здравствуйте.
Да, можно, только там настройка посложнее, чем в случае с обычными сайтами (интернет-магазинами)
Иногда ссылку можно найти где-то в дебрях исходного кода загруженной страницы, иногда нужно сделать дополнительный POST запрос для получения этих ссылок.
Но ничего невозможного нет. Можем настроить под заказ.

Здравствуйте, можно ли при помощи этого парсера скачивать картинки с файлообменников? Для примера в экселе есть ссылки на 1 или несколько картинок, при помощи парсера я загружаю исходную страницу по ссылке с экселя, далее ищу тег картинки но не находит. в хтмл коде тег картинки указана как ссылка. пытался прогрузить эту ссылку в парсер, не получается. подскажите пожалуйста в чем может быть проблема

Источник статьи: http://excelvba.ru/programmes/Parser

Парсинг сайтов в Excel: пошаговая инструкция

Парсить сайты в Excel достаточно просто если использовать облачную версию софта Google Таблицы (Sheets/Doc), которые без труда позволяют использовать мощности поисковика для отправки запросов на нужные сайты.

Подготовка к парсингу сайтов в Excel (Google Таблице)

Для того, чтобы начать парсить сайты потребуется в первую очередь перейти в Google Sheets, что можно сделать открыв страницу:

Потребуется войти в Google Аккаунт , после чего нажать на «Создать» (+).

Теперь можно переходить к парсингу, который можно выполнить через 2 основные функции:

  • IMPORTXML . Позволяет получить практически любые данные с сайта, включая цены, наименования, картинки и многое другое;
  • IMPORTHTML . Позволяет получить данные из таблиц и списков.

Однако, все эти методы работают на основе ссылок на страницы, если таблицы с URL-адресами нет, то можно ускорить этот сбор через карту сайта (Sitemap). Для этого добавляем к домену сайта конструкцию «/robots.txt». Например, «seopulses.ru/robots.txt».

Здесь открываем URL с картой сайта:

Нас интересует список постов, поэтому открываем первую ссылку.

Получаем полный список из URL-адресов, который можно сохранить, кликнув правой кнопкой мыши и нажав на «Сохранить как» (в Google Chrome).

Теперь на компьютере сохранен файл XML, который можно открыть через текстовые редакторы, например, Sublime Text или NotePad++.

Чтобы обработать информацию корректно следует ознакомиться с инструкцией открытия XML-файлов в Excel (или создания ), после чего данные будут поданы в формате таблицы.

Все готово, можно переходить к методам парсинга.

IPMORTXML для парсинга сайтов в Excel

Синтаксис IMPORTXML в Google Таблице

Для того, чтобы использовать данную функцию потребуется в таблице написать формулу:

  • Ссылка — URL-адрес страницы;
  • Запрос – в формате XPath.

С примером можно ознакомиться в:

Примеры использования IMPORTXML в Google Doc

Парсинг названий

Для работы с парсингом через данную функцию потребуется знание XPATH и составление пути в этом формате. Сделать это можно открыв консоль разработчика. Для примера будет использоваться сайт крупного интернет-магазина и в первую очередь необходимо в Google Chrome открыть окно разработчика кликнув правой кнопкой мыли и в выпавшем меню выбрать «Посмотреть код» (сочетание клавиш CTRL+Shift+I).

После этого пытаемся получить название товара, которое содержится в H1, единственным на странице, поэтому запрос должен быть:

Важно! Запрос XPath пишется в кавычках «запрос».

Парсинг различных элементов

Если мы хотим получить баллы, то нам потребуется обратиться к элементу div с классом product-standart-bonus поэтому получаем:

В этом случае первый тег div обозначает то, откуда берутся данные, когда в скобках [] уточняется его уникальность.

Для уточнения потребуется указать тип в виде @class, который может быть и @id, а после пишется = и в одинарных кавычках ‘значение’ пишется запрос.

Однако, нужное нам значение находиться глубже в теге span, поэтому добавляем /span и вводим:

Парсинг цен без знаний XPath

Если нет знаний XPath и необходимо быстро получить информацию, то требуется выбрав нужный элемент в консоли разработчика кликнуть правой клавишей мыши и в меню выбрать «Copy»-«XPath». Например, при поиске запроса цены получаем:

Важно! Следует изменить » на одинарные кавычки ‘.

Далее используем ее вместе с IMPORTXML.

Простые формулы с IMPORTXML в Google Sheets

Чтобы получить title страницы необходимо использовать запрос:

Источник статьи: http://zen.yandex.ru/media/seopulses/parsing-saitov-v-excel-poshagovaia-instrukciia-5ef1ba63a85d670b46262f03

Макросы VBA в Excel. VBA парсер погоды в качестве примера

Хотите верьте, хотите – нет, а дело было так…

В своей работе на протяжении многих лет мне приходилось для самых разнообразных целей (важных и не очень) пользоваться макросами VBA в Excel.

Не долго чесав репу, по обыкновению, решил применить комплексный подход: Так как программер я не профессиональный, подготовительную часть работы по забору информации с сайта произвел вручную. Ну не делать же бесплатный парсер сайтов, чтобы воспользоваться им только один раз для того, чтобы архив погоды скачать с погодного сайта России или погодного сайта Украины?

Ресурс, с которого я брал журнал погоды гисметео, находится здесь:http://www.gismeteo.ru/diary/
Формат, в который помещались первичные данные, – один файл Excel.Имена листов файла соответствуют году и месяцу, за который копируется журнал. Пример исходных данных для обработки макросом VBA в Excelсмотрите на скриншоте ниже.

Excel — исходные данные для журнала погоды

Лист для форматирования результатов с помощью макроса VBA

Excel — результирующий лист для журнала погоды

Алгоритм, по которому будет работать разборка данных для формирования моего журнала погоды гисметео:

    Объявляем необходимые переменные:

Будет использоваться для удобства две переменные: номер записи результирующий таблицы (начальная вторая строка, т.к. в первой заголовок) и номер записи исходной таблицы. Номер записи результирующей строки будет увеличиваться пока не будут обработаны все листы с исходными данными, а номер записи исходной таблицы будет принимать первоначальное значение, равное 3 в начале каждого цикла для каждого нового листа с исходными данными. О нем немного ниже.
Вторым шагом, который нужно будет выполнить в процессе создания примитивного VBA парсера погоды, является занесение в одномерный массив всех месяцев, за которые взяты данные из архива погоды гисметео:

На этом все. Вот исходный код этого примитивного макроса VBA парсера погоды gismeteo, который разбирает предварительно полученные данные для формирования архива погоды, удобного для себя, и приемлемого для руководства.

Как всегда буду рад вашим пожеланиям, замечаниям и здравой критике.

Источник статьи: http://sysadmin-arh.ru/%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81%D1%8B-vba-%D0%B2-excel-vba-%D0%BF%D0%B0%D1%80%D1%81%D0%B5%D1%80-%D0%BF%D0%BE%D0%B3%D0%BE%D0%B4%D1%8B/

Как оптимизировать скрипт парсинга данных сайта на VBA?

Прилагаю скрипт парсинга данных сайта. Запускается из екселя. Он свою функцию выполняет, но в процесе работы виснет и работает дольше чему нужно. (Замерял время на маленьком объеме ). Как можно оптимизировать этот скрипт используя масиввы например? Подскажите плиз массивы идут туго — не понимаю с какой стороны взять быка за рога?

2 ответа 2

В данном случае «бутылочным горлышком» задачи является не столько работа с COM-объектами (листы, диапазоны и т.д.), сколько следующие 2 момента:

  1. Парсинг текста веб-страницы ( html.body.innerHTML = .responseText )
  2. Сетевые запросы к удалённому серверу ( http.Open / http.Send )

На 1-й пункт мы повлиять особо не можем. Зато можем совладать со 2-м. Надо дополнительно подключить в диалоге «Tools->References» библиотеку «Microsoft WinHTTP Services» и задействовать возможность асинхронной работы объекта WinHttpRequest .

Один момент: не следует запускать слишком много асинхронных запросов одновременно, иначе это может быть воспринято удалённым сервером как сетевая атака. Получите ошибку «Bad gateway» или какую-нибудь ещё. Я ограничился 10-ю одновременными запросами, но при желании можете поэкспериментировать с этой величиной.

В итоге у меня получился макрос, отработавший за 3 минуты с небольшим (03:05)

Да, работа с объектами листа медленная, нужно переходить на массивы. Если есть возможность. определить количество строк для записи данных, если нет — задать размерность массива с запасом ( ReDim в примере — 5000).

При каждом изменении на экране идет его перерисовка. Медленная операция. Application.ScreenUpdating — отключить/включить обновление экрана. Это намного ускорит работу макроса, а в паре с массивами — в десятки раз.

Переменные типа Integer украдут несколько мгновений, т.к. все равно преобразуются в Long . Можно откусить чуток памяти в угоду времени.

Оператор With не только делает код более читабельным, но и ускоряет обращение к объекту.

Непонятно применение строковой переменной strT . Зачем в нее что-то писать (и на каждом шаге цикла), если она нигде не применяется?

Переменная d дублирует переменную i , лишняя.

Не забываем освобождать память ( Set переменная = Nothing ). На скорость не повлияет и обычно память сама освобождается по окончании работы макроса, но бывают случаи, когда регистры памяти остаются занятыми. Поэтому правильнее чистить принудительно.

Источник статьи: http://ru.stackoverflow.com/questions/969319/%D0%9A%D0%B0%D0%BA-%D0%BE%D0%BF%D1%82%D0%B8%D0%BC%D0%B8%D0%B7%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C-%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82-%D0%BF%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3%D0%B0-%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85-%D1%81%D0%B0%D0%B9%D1%82%D0%B0-%D0%BD%D0%B0-vba


0 0 голоса
Article Rating
Подписаться
Уведомить о
guest

0 Комментарий
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии