Сегодня я хочу поделиться с вами подробностями о новаторском инструменте для работы с данными - "Frog Parser", адрес проекта: https://frog-parser.com Этот инструмент представляет собой мощный парсер, который был разработан с целью сделать процесс извлечения данных из веб-сайтов максимально удобным, понятным и эффективным. Я постарался отойти от сложных парадигм программирования, делая данный инструмент доступным для пользователей с базовыми знаниями информатики, и в то же время удерживая гибкость и мощь необходимые для выполнения сложных задач парсинга.
"Frog Parser" основывается на проектном подходе, использует иерархические структуры команд и учитывает натуральное поведение пользователя при навигации по веб-страницам. В этой статье я хочу рассказать вам о ключевых особенностях этого продукта, его языке команд, типах представления рабочих документов, а также о преимуществах использования "Frog Parser" в ваших проектах. Давайте погрузимся в детали!
Парсинг рассматривается как комплекс различных команд, объединенных в иерархические группы по смыслу, или workflow.
С точки зрения конечного пользователя, процесс парсинга представляется в виде документа, именуемого "Frog Parser Workflow Document".
Применяется проектный подход: документы группируются в проекты.
Язык описания процесса парсинга, "Frog Parser Command Language", можно сравнить с языком ассемблера — это набор команд с параметрами.
Документ "Frog Parser Workflow" может иметь различные представления: табличное, схематическое, текстовое.
"Frog Parser Workflow Document" должен быть представлен в виде текстового человекопонятного файла для удобства хранения в системе контроля версий и ручного внесения правок.
Язык команд "Frog Parser Command Language" должен быть простым и понятным для пользователя с базовыми знаниями информатики, при этом обеспечивая достаточную гибкость для выполнения задач, но не перегруженным сложными парадигмами из области программирования, распространенными среди профессиональных разработчиков.
В результате процесса парсинга данных с веб-сайта создается "Dataset", который можно экспортировать из внутреннего представления в общепринятые форматы, такие как CSV или MS Excel.
Взаимодействие с веб-страницей соответствует общепринятым в индустрии веб-разработки методам. Например, поиск элементов на странице возможен с помощью различных способов: по идентификатору, имени HTML-тега, имени атрибута HTML-элемента, CSS-классу, CSS-селектору.
Навигация по веб-страницам имитирует поведение реального пользователя: клики по кнопкам, ввод данных в поля и т.д.
Для работы с “Frog Parser” конечному пользователю не требуется установка дополнительного программного обеспечения — достаточно иметь доступ к Интернету и последнюю версию веб-браузера (Google Chrome, MS Edge).
Задачи парсинга запускаются в пакетном режиме, а пользовательский интерфейс предусматривает мониторинг статуса их выполнения.
Программный продукт “Frog Parser” доступен по подписке. В случае неактивной подписки, продукт работает в демонстрационном режиме, добавляя "водяные знаки" (Watermarks) в выходные данные."
Здесь для ознакомления приведены экранные копии “Frog Parser”.









Пример "Frog Parser Workflow Document". В данном случае осуществляется парсинг сайта созданного с использованием Ecommerce CMS Shopify: https://district-theme-demo.myshopify.com/collections/clothing
{ "version": "1.0.0.0", "acceptLanguage": "", "commands": [ { "@type": "SetConstantValueToVariableCommand", "enabled": true, "name": "set-implicitly-wait-variable-value", "description": "", "retryCount": 1, "variableType": "Long", "variable": { "name": "implicitly-wait" }, "value": { "@type": "VariableValueLong", "value": 3000 } }, { "@type": "SetImplicitlyWaitCommand", "enabled": true, "name": "set-implicitly-wait", "description": "", "retryCount": 1, "variable": { "name": "implicitly-wait" } }, { "@type": "CreateDatasetCommand", "enabled": true, "name": "create-dataset", "description": "", "retryCount": 1, "variable": { "name": "dataset" }, "metadata": { "columns": [ { "name": "page-number", "type": "Integer" }, { "name": "product-title", "type": "String" }, { "name": "product-price", "type": "String" } ] } }, { "@type": "SetConstantValueToVariableCommand", "enabled": true, "name": "Set constant value to start-page variable", "description": "", "retryCount": 1, "variableType": "Url", "variable": { "name": "start-page" }, "value": { "@type": "VariableValueUrl", "value": "https://district-theme-demo.myshopify.com/collections/clothing" } }, { "@type": "OpenWebPageCommand", "enabled": true, "name": "Open start-web-page", "description": "", "retryCount": 1, "variable": { "name": "start-page" } }, { "@type": "SetConstantValueToVariableCommand", "enabled": true, "name": "set-handle-current-page-to-true", "description": "", "retryCount": 1, "variableType": "Boolean", "variable": { "name": "handle-current-page" }, "value": { "@type": "VariableValueBoolean", "value": true } }, { "@type": "SetConstantValueToVariableCommand", "enabled": true, "name": "set-page-number", "description": "", "retryCount": 1, "variableType": "Integer", "variable": { "name": "page-number" }, "value": { "@type": "VariableValueInteger", "value": 0 } }, { "@type": "WhileLoopCommand", "enabled": true, "name": "do-while-handle-current-page", "description": "", "retryCount": 1, "variable": { "name": "handle-current-page" }, "commands": [ { "@type": "IncrementVariableCommand", "enabled": true, "name": "increment-page-number", "description": "", "retryCount": 1, "variable": { "name": "page-number" } }, { "@type": "FindElementsCommand", "enabled": true, "name": "find-product-card-elements", "description": "", "retryCount": 1, "findBy": { "@type": "FindByTagName", "value": "product-card" }, "variable": { "name": "product-card-elements" } }, { "@type": "ForAllLoopCommand", "enabled": true, "name": "for-all-product-cards", "description": "", "retryCount": 1, "variable": { "name": "product-card-elements" }, "itemVariable": { "name": "product-card-element" }, "commands": [ { "@type": "FindChildElementCommand", "enabled": true, "name": "find-product-card-title-element", "description": "", "retryCount": 1, "findBy": { "@type": "FindByClassName", "value": "product-card__title" }, "variable": { "name": "product-card-title-element" }, "parentElementVariable": { "name": "product-card-element" } }, { "@type": "ReadPropertyCommand", "enabled": true, "name": "read-product-card-title-element", "description": "", "retryCount": 1, "variable": { "name": "product-card-title-element" }, "property": { "@type": "ElementPropertyText" }, "newVariable": { "name": "product-card-title-text" } }, { "@type": "FindChildElementCommand", "enabled": true, "name": "find-product-card-price-element", "description": "", "retryCount": 1, "findBy": { "@type": "FindByCssSelector", "value": ".price" }, "variable": { "name": "product-card-price-element" }, "parentElementVariable": { "name": "product-card-element" } }, { "@type": "ReadPropertyCommand", "enabled": true, "name": "read-product-card-price-element", "description": "", "retryCount": 1, "variable": { "name": "product-card-price-element" }, "property": { "@type": "ElementPropertyText" }, "newVariable": { "name": "product-card-price-text" } }, { "@type": "CreateDatasetRowCommand", "enabled": true, "name": "create-dataset-row", "description": "", "retryCount": 1, "variable": { "name": "dataset" }, "columns": [ { "name": "page-number", "columnVariable": { "name": "page-number" } }, { "name": "product-title", "columnVariable": { "name": "product-card-title-text" } }, { "name": "product-price", "columnVariable": { "name": "product-card-price-text" } } ] }, { "@type": "SaveVariableCommand", "enabled": true, "name": "save-dataset", "description": "", "retryCount": 1, "variable": { "name": "dataset" } } ] }, { "@type": "CheckElementExistsCommand", "enabled": true, "name": "check-next-page-link-exists", "description": "", "retryCount": 1, "findBy": { "@type": "FindByCssSelector", "value": "a[aria-label=\"Next page\"]" }, "variable": { "name": "handle-current-page" } }, { "@type": "IfThenCommand", "enabled": true, "name": "if-next-page-link-exists", "description": "", "retryCount": 1, "ifVariable": { "name": "handle-current-page" }, "thenCommands": [ { "@type": "FindElementCommand", "enabled": true, "name": "find-next-page-link-element", "description": "", "retryCount": 1, "findBy": { "@type": "FindByCssSelector", "value": "a[aria-label=\"Next page\"]" }, "variable": { "name": "next-page-link-element" } }, { "@type": "ClickCommand", "enabled": true, "name": "click-by-next-page-link", "description": "", "retryCount": 1, "variable": { "name": "next-page-link-element" }, "clickIfInvisible": true } ] } ] } ] }
Подводя итог, стоит отметить, что “Frog Parser” представляет собой уникальный инструмент, созданный для облегчения и упрощения процесса парсинга данных из веб-сайтов. Он объединяет в себе простоту использования для пользователей с базовыми знаниями информатики и мощность необходимую для выполнения сложных задач парсинга.
Используя “Frog Parser”, вы можете упростить и ускорить процесс извлечения данных, используя его интуитивно понятный язык команд, различные представления рабочих документов и возможность экспорта данных в общепринятые форматы. Кроме того, инструмент не требует установки дополнительного программного обеспечения и доступен по подписке, что обеспечивает максимальную гибкость использования.
В целом, "Frog Parser" предлагает универсальное и гибкое решение для работы с данными, сочетая в себе лучшие практики веб-разработки и навигации по страницам, имитируя поведение реального пользователя. Создан сбалансированный по простоте использования и функциональным возможностям нишевой программный продукт, следующий философии "Low Code Solution". Я надеюсь, что данный программный продукт поможет вам повысить эффективность и качество работы с данными.
Адрес проекта: https://frog-parser.com
Facebook страница проекта: https://www.facebook.com/frogparser
Telegram: https://t.me/frog_parser_com
С Уважением,
Роман