- Минимальная версия A-Parser
- 1.2.1794
Данный парсер является миксом идей из этого примера и парсера
Rank::CMS.
Логика работы
Парсер работает с двумя файлами:
Файл признаков должен быть в виде JSON структуры, где:
Для работы обязательно нужно указать токен Telegram бота и id чата. Как их получить - описано здесь.
Также в настройки вынесены опции включения/отключения расширенного лога (полезно при отладке новых признаков) и отображения в Telegram сообщениях превью страниц.
В качестве запросов нужно указывать ссылки на страницы, по которым будут проверяться необходимые значения.
В отправляемых сообщениях содержится ссылка на страницу, название признака, старое и новое значения.
Файл результата содержит данные об успешности каждого запроса:
Rank::CMS.Логика работы
- Получение заголовков и содержимого страниц
- Применение к данным из п.1 регулярных выражений для получения значений
- Сравнение значений с предыдущими и отправка сообщений в случае их отличий
Парсер работает с двумя файлами:
- файл признаков 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 сообщениях превью страниц.
В качестве запросов нужно указывать ссылки на страницы, по которым будут проверяться необходимые значения.
В отправляемых сообщениях содержится ссылка на страницу, название признака, старое и новое значения.
Файл результата содержит данные об успешности каждого запроса: