Парсер сайтов и файлов (парсинг данных с сайта в 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) можно выбрать ранее настроенный сайт из выпадающего списка.

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

 

Видеоинструкция

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

 

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

 

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

Примеры настроенных парсеров (можно скачать, запустить, посмотреть настройки)

Видеоинструкция (2 минуты), как запустить готовый (уже настроенный) парсер

 

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

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

Инструкция (с видео) по заказу настройки парсера
По всем вопросам, готов проконсультировать вас в Скайпе.

 

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

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

 

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

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

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

Комментарии

Игорь, спасибо за ответ.

"пункт 1 - тут поможет поиск в яндексе или гугле, качество результата будет около 90%" — Вы имеете в виду, что есть функционал яндекса или гугла, который может автоматически найти сайты для массива наименований компаний? Или каким-то образом использовать яндекс или гугл в рамках вашей программы Parser?

"пункт 2 - если только придумаете, с какого ОДНОГО сайта эти данные брать" — допустим, если пункт 1 выполнился и программа нашла сайт и вбила его в ячейку excel, то взять описание компании с него получится (прехедер в поисковике, например), я правильно понимаю?

"пункт 3 - не реализуем (ни моей программой, ни любой другой). Эти данные нигде не хранятся в упорядоченном виде." — по ключевым словам "форум, выставка и т.д." хотя бы выдать массив информации, так нельзя?

Здравствуйте, Иван
пункт 1 - тут поможет поиск в яндексе или гугле, качество результата будет около 90%
пункт 2 - если только придумаете, с какого ОДНОГО сайта эти данные брать
пункт 3 - не реализуем (ни моей программой, ни любой другой). Эти данные нигде не хранятся в упорядоченном виде.

Здравствуйте.
В файле excel столбец с 3000+ наименований компаний.
Задача:
1. Найти для каждой компании официальный сайт,
2. Найти краткое описание деятельности компании,
3. Найти названия выставок, в которых эти компании когда-либо участвовали или будут участвовать.
Поместить эти данные в три столбца напротив каждой компании, соответственно.
Можно ли сделать это с помощью вашей программы? Спасибо.

Программа куплена, мысль понятно, спасибо по Вашей рекомендации разобрался.

Михаил, это прямые ссылки на скачивание файлов
Всё должно работать


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

Поправлю: Как в ячейке C2 получить числа 2 3 5 6 (удалить вхождение одного массива в другой)

Как решить следующую задачу:
ячейка A2 содержит числа: 1 2 3 4 5 6
ячейка B2 содержит числа: 1 4
Как в ячейке C2 получить числа 2 5 6 (удалить вхождение одного массива в другой)
Строк несколько тысяч, значения разнообразные, но всегда уникальны. Пока на ум приходить удалить через таблицу замен, но это будет долго.

https://excelvba.ru/programmes/Parser#comment-10142
А то что это не прямая ссылка на файл картинки, а что-то другое. По данным ссылкам парсер скачать файлы не может.

Ярослав, список запланированных парсеров пока нет возможности посмотреть.
Я с такой необходимостью ни разу не сталкивался, потому и не стал делать.


Михаил, ваш вопрос не понятен.
Указанные вами ссылки ведут напрямую на картинки
В чем сложность, и что конкретно у вас не получается, мне не ясно.

Добрый день. Подскажите пожалуйста как парсеру скачать ссылку на картинку, если в теле вот такие ссылки

http://www.ru.roca.com/RocaResourceServlet/resources/getTransformation?i...

http://www.ru.roca.com/servlet/getTechnicalDrawingTransformation?product...

есть ли примеру решения подобных задач

Есть ли возможность посмотреть список всех запланированных парсеров ?
Было бы очень удобно.

Возможно офтоп. Есть ли возможность из файла xls по шаблону перегнать данные в xml ? спасибо

Благодарю!

Эдуард, это возможно.
Читайте справку по действию "Случайное число"

Здравствуйте, Игорь!
Хочу спросить, нельзя ли в парсере реализовать возможность установки задержки между очередным запросом по генератору случайных чисел. В Экселе есть подобные встроенные функции. Генерация значения в диапазоне от и до. Столкнулся с тем, что на буржуйских ресурсах ПО определяет , что запросы посылает не человек, что сделать не сложно, учитывая, что период постоянен. А так можно будет прикинуться юзером.

Игорь, вы уже отвечали Олегу на этот вопрос, но я не смог разобраться, как вывести каждый элемент массива в отдельную строку в один столбец, не могли бы объяснить более подробно. Спасибо.

Спасибо разобрался.

Добрый день. Парсер вводит все найдены товары в одну строку.
Как быть?

Игорь, подскажите, пожалуйста как работает щелчок по кнопке в парсере. Никак не получается разобраться.
Точнее нахождение элемента.
Делаю Открыть страницу в IE. Он вроде бы открывает, выводит мне исходный код.
Но с кнопкой дальше что-то никак.
Я в коде страницы кнопку нашёл. Там внутри button есть параметр class и id есть.
Я так и так по-разному пытался что-нибудь подставить в действие Найти элемент в IE.
Никак не получается.
Очень нужно разобраться с этой темой :(

Нашел практически нужную функцию "Вывод строки на заданный лист" НО там нельзя указать номер столбца куда выводить(((

Вот где нужен цикл.
1. получаю массив блоков в каждом блоке подряд несколько цен с одинаковым названием продукта и одинаковыми тегами (число варьируется!!!)
2. беру блок, определяю сколько названий продукта в блоке
3. запоминаю в переменную "количество"
4. получаю массив цен из блока, беру последнюю цену (далее идет вывода на лист)
5. уменьшаю переменную количества на 1 и беру предпоследнюю цену
и т.д.
и без цикла тут не обойтись, если есть вариант обойти "Вернуться к действию" буду благодарен за совет.

Здравствуйте, Роман.
Циклы не нужны
В вашем примере, достаточно 2 действия:
1) Разбить текстовую строку на массив (получим массив из 3 названий парсеров)
2) Запустить другой парсер (в это действие будут поданы элементы массива по очереди, и 3 этих парсера запустятся один за другим)
Чем не цикл? Зачем что-то изобретать?

Касательно счётчика, ссылку посмотреть не смог (она ведет на заблокированный ресурс)
Вы просто перемудрили с настройками, - этот же счётчик увеличивается где-то другими действиями

Игорь, спасибо за способ с ПДФ файлом, это многократно быстрее и больше нет ошибок из-за того, что IE не успевает иной раз прогрузить файл.

По поводу циклов, я бы тоже от них отказался, но не во всех случаях понимаю, как это сделать, не городя огород. Например, нужно запустить несколько парсеров, список этих парсеров берется из ListBox, по виду Парсер2|Парсер6|Парсер10. Как их засунуть по одному в действие "Запустить другой парсер", ведь массив туда никак, надо разбивать, и циклы вижу лучшим решением.

Кстати, чуть не забыл, вот случай цикла, когда он отрабатывает неправильно. <ссылка удалена> Закономерность такая - добавляется очередной массив при следующих значениях счетчика: 3,5,8,12,17,23,30 и т.д. То есть увеличение идет: +2,+3,+4,+5,+6 и т.д.

... а я цикл на "Вернуться к действию" построил, правда результат пока нестабилен ;) но это наверное из-за некорректной привязки к тегам.. Я так думал....

Олег, в этом случае надо полностью перенастраивать парсер (совсем другой принцип настройки, - формируя массив этот в исходных данных, по последнем подуровне)
На уровне одной галочки, в нынешнем варианте программы, проблема не решаема.


Роман, по вашим вопросам:

1) по переменным на форме парсера, - там далеко не всё отлажено в плане интерфейса. Потом как-нибудь доделаю.
Эти переменные крайне редко используются, и, в основном, мной. (не особо они нужны)
Я просто закрываю настройки парсера после изменения переменных и сохранения парсера, - и тогда переменные нормально отображаются.

2) Проверка на выполнение условия. Параметры 5 и 6 введены недавно, редко они нужны. Назвал параметры как мог, думал что будет понятно
Позже опишу этот момент в справке

3) возможность "Вернуться к действию" (аналог GoTo в программировании) - крайне не рекомендуется к использованию. Лично я ей вообще не пользуюсь. Сделал по просьбе моих коллег, которые изредка её применяют
Злоупотребление этой командой, в сочетании с кучей действий в одном списке, приводит к путанице. Используйте наборы действий, которые можно вызвать из любого списка действий (аналог вызова процедур / подпрограмм в программировании)

4) Касательно возможности визуально разграничить строки на отдельные блоки и подписать их, — тоже думал об этом. Тоже иногда хочется подписать.
Может когда и сделаю

5) Отключенные строки при копировании/перемещении в буфер обмена становятся невидимыми
Да, есть такое. Недоработка. Исправлю в будущем

6) Насчёт кнопок для Parser_Start — не вижу необходимости
Очень редко пользуюсь

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

8) Размер любого файла (хоть PDF, хоть любого другого) можно определить, применив 2 действия:

Исходное значение
Текст (длиной 34 символа)
Действие Параметр Значение Результат
Загрузить содержимое текстового файла Путь к файлу Текст (длиной 45983 символа)

Кодировка текстового файла windows-1251
Количество символов Символ Число
Сохранить результат в переменную
Вывести результат да

9) такой возможности пока нет
В планах сделать подстановочный код типа {ColumnIndex} для получения номера текущего столбца

Как развернуть вывод массива, что бы он выводился не во много столбцов а во много строк (1 элемент -1 строка).
В принципе (наверное) можно ввести "галочку" - поменять местами столбцы и строки.
Можно конечно потом транспонированием поменять.... но это доп обработка.

Добрый день. Хотелось бы несколько пожеланий высказать и задать пару вопросов.

-(Основная информация – переменные – изменить/удалить переменные). Не работают кнопки «Создать» и «Клонировать». А если поставить галку «Скрытая» и сохранить изменения, то, при снятии галки в дальнейшем, переменные не становятся видимыми, помогает только удаление переменной.

-(Действия – Проверка и сравнение – Проверка на выполнение условия). «5: Проверять другое значение» и «6: Другое проверяемое значение». Названия вводят в заблуждение. Много дней прибывал в полной уверенности, что здесь задается дополнительное значение, на которое также проверяются имеющиеся в исходном значении данные, после проверки значения в пункте 2, т.е. если проходит по пункту 2, потом пункту 6, то производится действие. Даже не сомневался, что именно так и работает, пока случайно не наткнулся в демо парсере на пример использования этой функции с задействованными 5 и 6 пунктами. Крайне удобная функция, но, полагаю, что многие ей не пользуются по тем же причинам, что не пользовался и я.

- «3: Действие при выполнении условия (Вернуться к действию). Катастрофически не хватает возможности, чтобы в момент введения номера строки, на которую следует вернуться/перескочить, шла привязка к действию в этой строке, а не к самой строке – если не по умолчанию так, то хотя бы опционально (может быть галку «привязка к действию»). Я понимаю, что когда знаешь вдоль и поперек парсер, то нет острой необходимости что-то переделывать на ходу, вставлять строки, возвращаться, менять алгоритм, но когда ты новичок, а один уровень парсера состоит из нескольких десяток строк с ветвящимися условиями и переходами по всему уровню взад и вперед, то любая вставка новой строки оборачивается просто трагедией с перестановкой всех номеров в «Вернуться к действию».

- Также очень сильно не хватает комментариев или хоть какой-то возможности визуально разграничить строки на отдельные блоки и подписать их. Или просто отделить пустой строкой с комментарием, или дополнительно изменять фон строк. Сейчас я пользуюсь костылями - вставляю строку в начале блока строк, отключаю ее и пишу в ней комментарий, что хоть и помогает улучшить восприятия больших парсеров, но недостаточно. Эти две проблемы (вместе с «Вернуться к действию»), которые наиболее старательно вставляют палки в колеса при создании больших, многозадачных, разветвленных парсеров.

- Отключенные строки при копировании/перемещении в буфер обмена становятся невидимыми.

- Не хватает кнопки, которую можно нажимать, находясь на любом подуровне, чтобы сработали «Парсер Старт» и все предыдущие подуровни. Иногда очень неудобно прыгать от «Набора Действий» или «Вывода на лист» к энному подуровню через «Парсер Старт» и все предыдущие подуровни, и так много раз к ряду. Если бы можно было в «Наборе действий» иметь такую же кнопку, было бы совсем хорошо, т.е. чтобы в «Набор действий» приходил первый результат оттуда, где вставлен этот «Набор действий». А уж если бы «Набор действий» знал, сколько раз он вставлен в парсер, с возможностью указания его порядкового номера в парсере и получения оттуда данных, было вообще круто, но это я уже расфантазировался.

-(Вывод на лист – Список столбцов для вывода – Формат – Примечание). Не хватает возможности убрать красный треугольник примечания у ячейки, если само примечание поступает из переменной пустое.

И пару вопрос:
- Может ли парсер определять размер файлов, в частности ПДФ? Сейчас для сравнения актуальности скачанного с сайта файла с хранящимся на компьютере, приходится каждый открывать через IE, копировать текстовое содержимое и только потом сравнивать.
- Как обратиться к гиперссылке, не зная заранее номер столбца? К сожалению, не работают переменные такого вида: {=B2@} или {B2@} и соответственно {={ColumnLetter}{row}@} или {{ColumnLetter}{row}@}, только по номеру столбца типа {1@}. При этом переменные такого вида, но без гиперссылки, работают исправно.

Спасибо.

Кнопка «Редактировать список действий» всегда присутствует там, где показано на видео
Не может быть, чтобы кнопки не было (отправьте скриншот формы настроек мне на почту)

Добрый день,почему-то то, как выглядит настройка на видео, не совпадает с текущим представлением.
После того, как задается режим "фиксированное исходное значение" вы внизу нажимаете "Редактировать список действий",
однако у меня в настройках этой кнопки нет.

Вкладка Вывод на лист - подвкладка Настройки листа для вывода

Цитата из справки:

Столбец, по которому определяется последняя заполненная строка таблицы.
Очень важный параметр, который позволяет правильным образом сформировать таблицу. Если при значении по умолчанию 1 "А" у вас первый столбец будет пустым, то парсер будет перезаписывать данные в одной строке, не формируя таблицу.