- Как заказать парсер сайта
- Видеоинструкции по настройке
- Возможности программы-парсера
- Действия в парсере
- Раздел «Работа с HTML»
- Раздел «Текстовые»
- Раздел «Перекодировка и форматирование»
- Раздел «Проверка и сравнение»
- Раздел «Разное»
- Раздел «Функции массива»
- Раздел «Числовые»
- Раздел «Работа с переменными»
- Раздел «Листы и книги Excel»
- Раздел «Обработка файлов из папки»
- Раздел «HTTP запрос»
- Раздел «Internet Explorer»
- Раздел «Управление парсером»
- Раздел «Веб-запросы, XML, макросы VBA»
- Недокументированные действия
- Раздел «ИИ (нейросети)»
- Работа с браузером (Chrome и т.п.)
- Отключенные (устаревшие) действия
- Интерфейс программы
- Использование браузера
- Настройка парсера
- Ошибки при парсинге
- Вывод массива значений в одну ячейку
- Обход защиты Qrator, Incapsula и CloudFare
- Ошибка: сервер не ответил за 9 секунд
- Парсер перезаписывает данные в первой строке листа
- Невозможно запустить макрос, - нет доступа к проекту VBA
- Ошибка Compile error in hidden module
- Ошибка загрузки страницы по HTTPS (SSL Error)
- Дополнительные возможности
- Зарезервированные переменные и подстановочные коды парсера
- Кеширование страниц в парсере
- Переменные в парсере
- Обновление строк в существующей таблице при парсинге
- Переключение между наборами настроек в парсере
- Запуск мониторинга цен по расписанию
- Запуск парсера по расписанию
- Программный запуск парсера из внешнего макроса
- Доп. опции парсера (файл parser.ini)
- Наборы действий
- Прочие статьи по настройке парсера
- Коды останова парсера, и перехода на другое действие
- Плагины для парсера
- Запуск нескольких парсеров по очереди
Объектная модель мониторинга цен
- Объектная модель парсера
- Обработка капчи (Captcha) в парсере
- Прокси серверы
Объектная модель мониторинга цен |
Эта статья демонстрирует, что находится «под капотом» программы-парсера, — для тех, кому это интересно.
PriceMonitor [PriceMonitor] Корневой объект модуля мониторинга цен конкурентов
Name [String] Имя конфигурации мониторинга цен
filename [String] Путь к файлу настроек мониторинга
Version [String] Версия настроек мониторинга цен
AppVersion [Long] Версия программы, в которой сохранены настройки
MinAppVersion [Long] Минимально необходимая версия программы
FileFormat [Long] Версия формата файла настроек
Options [PriceMonitorOptions] Общие параметры запуска, обработки ссылок и вывода статусов
DefaultLoadMode [LOAD_MODE] Способ загрузки страниц по умолчанию (WinInet, WinHTTP, IE, Browser)
FirstDataRow [Long] Номер первой строки с данными на листе Excel
Pause [Single] Минимальная пауза между запросами в секундах
OptionsDefaultColumn [String] Столбец с опциями товара по умолчанию (номер или смещение)
DefaultProxy [String] Адрес прокси-сервера по умолчанию
ExtraSubdomains [String] Список нестандартных доменов второго уровня
UseDiscountPrice [Boolean] Использовать цену со скидкой (price_discount) вместо обычной
ShowErrors [Boolean] Выводить всплывающие уведомления об ошибках
Workbook_Filename [String] Путь к файлу Excel со ссылками
Workbook_Open [Boolean] Открывать файл Excel автоматически при запуске
Workbook_Save [Boolean] Сохранять изменения в книге после завершения
AllSheets [Boolean] Перебирать все листы активной книги
Format_AlignH [Boolean] Выравнивать значения по центру по горизонтали
Format_AlignV [Boolean] Выравнивать значения по центру по вертикали
Stock1_Text [String] Текст при наличии товара (по умолчанию: есть)
Stock0_Text [String] Текст при отсутствии товара (по умолчанию: нет)
StockErr_Text [String] Текст, если наличие не распознано (по умолчанию: ??)
PriceNotFound_Text [String] Текст ошибки, если цена не найдена (#нет цены#)
LoadPageError_Text [String] Текст при сбое загрузки страницы (#ошибка#)
Error404_Text [String] Текст при ошибке 404 (#ссылка#)
Error403_Text [String] Текст при ошибке 403 (#доступ#)
ExtraInfoEnabled [Boolean] Выводить служебную информацию (время запуска) в строку листа
ExtraInfoRow [Long] Номер строки для вывода служебной информации
ExtraInfoData [String] Шаблон вывода служебной информации
domains [PriceMonitorDomains] Коллекция настроенных сайтов (доменов) конкурентов
Items [PriceMonitorDomain] Настройки парсинга конкретного домена
index [Long] Порядковый номер домена в списке
DomainName [String] Адрес домена (например, site.ru)
Enabled [Boolean] Активен ли парсер для данного домена
LoadMode [LOAD_MODE] Способ загрузки страниц для домена
Browser_Headless [Boolean] Запускать браузер в фоновом (скрытом) режиме
ProxyEnabled [Boolean] Использовать прокси-сервер для этого сайта
SpecialPause [Single] Индивидуальная пауза между запросами
SpecialTimeout [Long] Индивидуальный таймаут ожидания ответа сервера
OptionsEnabled [Boolean] Включен ли выбор цены по опции товара (артикул, объем и т.п.)
OptionsColumn [String] Столбец с опцией товара для данного домена
CaptchaSignature [String] Текст на странице, вызывающий обработчик капчи
SaveFieldValuesToVariables [Boolean] Сохранять значения вычисленных полей в переменные
SpecialColumnsEnabled [Boolean] Переопределять общие столбцы вывода для этого домена
PriceRateEnabled [Boolean] Выводить цены в виде формул умножения на коэффициент
PriceMultiplier [String] Множитель цены (ячейка, именованный диапазон или переменная)
CropHyperlinkAtChar [String] Символ или текст для обрезки гиперссылки
CheckStatus [Long] Статус проверки работоспособности настроек сайта
Comment [String] Комментарий к настройкам домена
DataArray [Variant] Двумерный массив ссылок домена для обработки
Fields [PriceMonitorFields] Коллекция извлекаемых полей товара (цена, наличие и др.)
Items [PriceMonitorField] Настройки извлечения конкретного поля
index [Long] Порядковый номер поля
ID [String] Идентификатор поля (price, price_discount, priceold, stock и др.)
Enabled [Boolean] Активно ли вычисление поля
Comment [String] Описание или комментарий к полю
DateLastModified [Long] Дата последнего изменения поля (UNIX timestamp)
Actions [ArrayActions] Цепочка действий для извлечения значения поля из HTML
Items [ArrayAction] Список действий текущего уровня
parameters [ArrayActionParameter] Параметры конкретного действия
SubActions [ArrayActions] Рекурсивный подуровень действий
LoadActions [ArrayActions] Дополнительные действия при загрузке страницы товара
Items [ArrayAction] Список действий текущего уровня
parameters [ArrayActionParameter] Параметры конкретного действия
SubActions [ArrayActions] Рекурсивный подуровень действий
AASets [ActionSets] Наборы действий домена (например, Parser_OnCaptcha)
Items [ActionSet] Отдельный набор действий
Actions [ArrayActions] Список действий внутри набора
Variables [Variables] Локальные переменные домена (логин, пароль и др.)
Items [Variable] Отдельная переменная домена
SpecialColumns [PriceMonitorColumns] Индивидуальные столбцы вывода результатов для данного домена
Items [PriceMonitorColumn] Настройка вывода отдельного столбца
Stats [PriceMonitorStats] Статистика скорости и объемов загрузки для домена
LoadTime [Double] Среднее время загрузки исходных данных (мс)
PageTime [Double] Время выполнения HTTP-запроса (мс)
FieldsTime [Double] Время вычисления всех полей (мс)
Duration [Double] Суммарное время загрузки и парсинга (мс)
TotalTime [Double] Полное время обработки ссылки с учетом вывода на лист (мс)
PageSize [Double] Средний размер загружаемой страницы в байтах
Parser [WebsiteParser] Движок парсера, создаваемый в рантайме или прикрепленный к домену
Columns [PriceMonitorColumns] Общие настройки столбцов для вывода результатов на лист Excel
Items [PriceMonitorColumn] Отдельный столбец вывода относительно ячейки со ссылкой
Enabled [Boolean] Включен ли вывод в данный столбец
Column [Long] Смещение столбца (1 — ячейка со ссылкой, 2 — столбец правее и т.д.)
Source [String] Код поля (%price%, %stock%, %PRICE-IF-INSTOCK%) или формула
color [PriceMonitorColorOptions] Настройки условного форматирования и подсветки цен
Enabled [Boolean] Включена ли цветовая подсветка цен
BaseColumn [Long] Номер столбца с базовой (нашей) ценой
FirstColumn [Long] Начальный столбец диапазона подсветки
FilterRow [Long] Номер строки заголовков для фильтрации столбцов
FilterMask [String] Маска заголовка столбца (например, *.*)
ColorIfLess [Long] Цвет заливки, если цена конкурента ниже базовой
ColorIfMore [Long] Цвет заливки, если цена конкурента выше базовой
ExtraColorSettings [Boolean] Использовать расширенные правила условного форматирования
SimpleFormulas [Boolean] Использовать упрощенные шаблоны формул (УНАСДОРОЖЕ / УНАСДЕШЕВЛЕ)
IconsEnabled [Boolean] Отмечать изменившиеся цены значками (иконками)
IconSet [Byte] Номер набора значков Excel
Actions [ArrayActions] Список действий с пользовательскими правилами УФ
Variables [Variables] Общие переменные конфигурации мониторинга цен
Items [Variable] Отдельная переменная (например, курс валюты или коэффициент)
Counters [PriceMonitorCounters] Счетчики и сводная статистика ссылок и доменов при запуске
LinksTotalCount [Long] Общее количество найденных на листе ссылок
LinksToProcess [Long] Количество ссылок, взятых в обработку
Domains_Found [Dictionary] Словарь всех доменов, найденных на листе
Domains_Configured [Dictionary] Словарь всех настроенных доменов
Domains_WithoutLinks [Dictionary] Настроенные домены, для которых не найдены ссылки на листе
Domains_ToProcess [Dictionary] Домены, готовые к запуску обработки
Domains_ToSetup [Dictionary] Домены со ссылок на листе, для которых еще нет настроек
Domains_Ignored [Dictionary] Настроенные домены, пропущенные пользователем при выборе
Domains_ChosenToRun [Dictionary] Домены, выбранные пользователем в диалоговом окне
Детальное описание узлов и связей объектной модели PriceMonitor
1. Архитектура сайтов и полей данных (PriceMonitorDomains → PriceMonitorDomain → PriceMonitorFields)
Основу конфигурации мониторинга цен составляет иерархия доменов и настроенных для них правил извлечения данных:
- PriceMonitorDomains — управляющая коллекция всех настроенных сайтов (
Items). Отвечает за фильтрацию собранных на листе ссылок по доменам, вызов диалога выбора сайтов (SelectedInDialogWindow) и последовательный запуск обработки каждого домена. - PriceMonitorDomain — конфигурация конкретного сайта (
DomainName). Хранит индивидуальный способ загрузки (LoadMode), настройки прокси (ProxyEnabled), паузы (SpecialPause), таймауты (SpecialTimeout), правила считывания опций товара (OptionsColumn), а также собственные наборы действий (AASets) и переменные (Variables). - PriceMonitorFields и PriceMonitorField — коллекция извлекаемых параметров товара (цена
price, старая ценаpriceold, наличиеavailи др.). Каждый объектPriceMonitorFieldсодержит цепочку действий ArrayActions, которая преобразует HTML-код страницы в готовое значение поля, после чего формируется единый JSON-ответ с метаданными запроса. - PriceMonitorStats — вложенный объект статистики домена, фиксирующий скорость обработки (ссылок в минуту), среднее время загрузки страницы, время вычисления полей и размер скачиваемого HTML.
2. Связь с движком WebsiteParser
- Встраивание парсера (Parser) — внутри каждого
PriceMonitorDomainнаходится свойствоParserтипа WebsiteParser. При запуске мониторинга для каждого домена программно создается и настраивается временный экземплярWebsiteParser(методCreateParser), куда передаются таймауты, паузы, наборы действий, переменные и настройки прокси. - Загрузка страниц (LoadActions) — действия по загрузке HTML-кода страницы (
LoadActions) транслируются вParser.SourceData.Actions, благодаря чему для скачивания страниц используется стандартный механизм выполнения действий ядра парсера.
3. Вывод результатов и визуализация (PriceMonitorColumns и PriceMonitorColorOptions)
- PriceMonitorColumns и PriceMonitorColumn — определяют правила записи полученных данных в ячейки Excel относительно исходной ячейки со ссылкой (
Column = 1— сама ячейка со ссылкой,2— столбец правее и т.д.). Поддерживают подстановку значений полей (%price%,%PRICE-IF-INSTOCK%), умножение цены на коэффициент (PriceMultiplier), обрезку гиперссылок и вывод статусов ошибок (#нет цены#,#ошибка#). - SpecialColumns — необязательная коллекция
PriceMonitorColumnsна уровне отдельного домена, позволяющая переопределить общие правила вывода столбцов для конкретного сайта. - PriceMonitorColorOptions — модуль визуального анализа цен. Автоматически создает и применяет правила условного форматирования (
FormatCondition) для подсветки цен конкурентов, которые ниже (ColorIfLess) или выше (ColorIfMore) базовой цены, а также управляет значками изменения цены (IconSetCondition).
4. Общие настройки и счетчики выполнения (PriceMonitorOptions, PriceMonitorCounters, Variables)
- PriceMonitorOptions — глобальные параметры конфигурации: режим загрузки по умолчанию (
DefaultLoadMode), стартовая строка таблицы (FirstDataRow), тексты статусов наличия (Stock1_Text,Stock0_Text), настройки автооткрытия и сохранения книги Excel, а также вывод служебной информации о времени запуска (ExtraInfoEnabled). - PriceMonitorCounters — служебный объект статистики текущего сеанса работы. Распределяет найденные на листе ссылки и домены по категориям: готовые к обработке (
Domains_ToProcess), не настроенные (Domains_ToSetup), без ссылок на листе (Domains_WithoutLinks) и пропущенные (Domains_Ignored). - Variables — коллекция общих переменных конфигурации (
Variable), доступных во всех доменах и формулах расчета (например, для хранения курсов валют или общих параметров).
- Добавить комментарий
- 4 просмотра









