- PHP 7.4
- Yii2 console
Результатом работы является PHP Class парсера одного источника.
Класс должен реализовывать интерфейс components/parser/ParserInterface.php. Главным методом класса
является метод \app\components\parser\ParserInterface::run().
Метод run() должен возвращать массив объектов \app\components\parser\NewsPost. Результатом успешной
реализации парсера является успешное выполнение метода \app\components\parser\NewsPost::validate() на каждом экземпляре
NewsPost.
В методе run() должны выполнятся HTTP запросы к источнику данных и их преобразование
в необходимый формат.
Все HTTP запросы выполняются через метод \app\components\Helper::getCurl, который возвращается экземпляр объекта linslin\yii2\curl.
Парсинг верстки осуществляется при помощи PHPQuery или XPath.
- RSS Feed для Яндекс.Новостей
- RSS Feed с заголовками
- API источника
- HTML страница мобильной верстки
- HTML основной верстки
Метод run() должен загружать последние 10-100 новостей источника с полным содержимым.
Новость должна состоять из:
- заголовка описания
- изображения
- даты создания (UTC+0)
- ссылки на оригинал
- массива содержимого.
В качестве описания может использоваться описание из источника, либо первый абзац новости. В качестве изображения может использоваться изображение из источника, либо первое изображение из новости (если есть). Остальное содержимое новости загружается в массив элементов, которые могут иметь тип:
- Заголовок (1-6 уровней)
- Текст
- Цитата
- Изображение
- Видео с Youtube
Элементы содержимого новости с другим типом игнорируются.
В классе объявляются константы USER_ID и FEED_ID, которые в дальнейшем инициализируются необходимыми значениями
Пример реализации создания новостей с элементами находится в components/parser/news/Example.php
- Клонировать репозиторий
- Установить зависимости через Composer
- Добавить новый файл с классом парсера в components/parser/news
- Запустить консольную команду php yii parser/news {parser_classname}
При неуспешной валидации данных с парсера в консоль будут выведены ошибки