- 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}
При неуспешной валидации данных с парсера в консоль будут выведены ошибки