Универсальный чекер апдейтов(текста, цен и т.п.) на страницах с уведомлением в Telegram

Универсальный чекер апдейтов(текста, цен и т.п.) на страницах с уведомлением в Telegram 2.0

Доступно владельцам лицензии
Минимальная версия A-Parser
1.2.1794
Данный парсер является миксом идей из этого примера и парсера Rank::CMS Rank::CMS.

Логика работы
  1. Получение заголовков и содержимого страниц
  2. Применение к данным из п.1 регулярных выражений для получения значений
  3. Сравнение значений с предыдущими и отправка сообщений в случае их отличий

Парсер работает с двумя файлами:
  • файл признаков files/ValuesChecker/signatures.json
  • SQLite база данных files/ValuesChecker/data.sqlite
А также формирует результат в виде CSV таблицы. Все файлы автоматически создаются при первом запуске, а signatures.json еще и заполняется примером, который можно использовать для наполнения своими признаками.

Файл признаков должен быть в виде JSON структуры, где:
  • На первом уровне в качестве имен объектов используются названия доменов.
  • На втором уровне в качестве имен объектов используются названия признаков.
    • Обязательно должен присутствовать объект _title, в котором должны быть значения text (содержащий строку с общим названием страниц) ИЛИ стандартные для прочих объектов третьего уровня regex и mod (содержащие регулярное выражение (важно не забывать об экранировании слэшей и кавычек) и модификаторы для получения названий страниц).
  • На третьем уровне должны присутствовать значения regex и mod, содержащие регулярное выражение и модификаторы для получения искомых значений. Также опционально может присутствовать значение headers: true указывающее искать совпадение в заголовках вместо содержимого страницы.
Код:
{
    "rozetka.com.ua": {
        "_title": {
            "regex": "<h1[^>]*>\\s*([^<]+?)\\s*<\\/h1>",
            "mod": "i"
        },
        "price": {
            "regex": "\"price\":\\s*\"([^\"]+)",
            "mod": ""
        },
        "availability": {
            "regex": "\"availability\":\\s*\"(?:https?:\\/\\/schema\\.org\\/)([^\"]+)",
            "mod": "i"
        }
    },
    "olx.ua": {
        "_title": {
            "text": "Пример отслеживания активности автора обьявления"
        },
        "Последний раз на сайте": {
            "regex": "\\\\\"lastSeen\\\\\":\\\\\"([^\\\\\"]+)",
            "mod": ""
        }
    },
    "components.ru": {
        "_title": {
            "regex": "<h1[^>]*>\\s*([^<]+?)\\s*<\\/h1>",
            "mod": "i"
        },
        "Доступно": {
            "regex": "class='j-product_quantity'[^>]*>\\s*(.+?)\\s*<\\/",
            "mod": ""
        },
        "Срок поставки": {
            "regex": "class='j-product_delivery'[^>]*>\\s*(.+?)\\s*<\\/",
            "mod": ""
        }
    },
    "a-parser.com": {
        "_title": {
            "text": "Пример отслеживания изменений в заголовках"
        },
        "Last modified": {
            "headers": true,
            "regex": "last-modified:\\s*(.+)",
            "mod": "i"
        }
    }
}

Для работы обязательно нужно указать токен Telegram бота и id чата. Как их получить - описано здесь.
Также в настройки вынесены опции включения/отключения расширенного лога (полезно при отладке новых признаков) и отображения в Telegram сообщениях превью страниц.

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

В отправляемых сообщениях содержится ссылка на страницу, название признака, старое и новое значения.
6jlci_210812184040.png

Файл результата содержит данные об успешности каждого запроса:
dwm2g_210812184632.png
Автор
Support
Загрузок
23
Просмотры
44
Первый выпуск
Обновление

Рейтинги

0,00 звёзд Оценок: 0

Ещё ресурсы от Support

Последние обновления

  1. Обновление 2.0

    Парсер переписан на JS APIv2 Добавлена возможность проверять значения в заголовках
Назад
Верх