Данный парсер является миксом идей из этого примера и парсера Rank::CMS.
- Минимальная версия A-Parser:
- 1.2.1794
Логика работы
- Получение заголовков и содержимого страниц
- Применение к данным из п.1 регулярных выражений для получения значений
- Сравнение значений с предыдущими и отправка сообщений в случае их отличий
Парсер работает с двумя файлами:
А также формирует результат в виде CSV таблицы. Все файлы автоматически создаются при первом запуске, а signatures.json еще и заполняется примером, который можно использовать для наполнения своими признаками.
- файл признаков files/ValuesChecker/signatures.json
- SQLite база данных files/ValuesChecker/data.sqlite
Файл признаков должен быть в виде 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 сообщениях превью страниц.
В качестве запросов нужно указывать ссылки на страницы, по которым будут проверяться необходимые значения.
В отправляемых сообщениях содержится ссылка на страницу, название признака, старое и новое значения.
Файл результата содержит данные об успешности каждого запроса:
-
Вступайте в наш Telegram чат: https://t.me/a_parser Нас уже 2600+ и мы растем!Скрыть объявление
Универсальный чекер апдейтов(текста, цен и т.п.) на страницах с уведомлением в Telegram 2.0
Парсер, который позволяет проверять изменения на разных страницах и получать уведомления в Telegram
Последние обнoвления
- Обновление 2.0 14 фев 2023