Skip to content

TyRun555/parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Парсер новостных ресурсов

Стек:

  • 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.

Источником данных может являться (по приоритету):

  1. RSS Feed для Яндекс.Новостей
  2. RSS Feed с заголовками
  3. API источника
  4. HTML страница мобильной верстки
  5. HTML основной верстки

Описание работы парсера

Метод run() должен загружать последние 10-100 новостей источника с полным содержимым. Новость должна состоять из:

  1. заголовка описания
  2. изображения
  3. даты создания (UTC+0)
  4. ссылки на оригинал
  5. массива содержимого.

В качестве описания может использоваться описание из источника, либо первый абзац новости. В качестве изображения может использоваться изображение из источника, либо первое изображение из новости (если есть). Остальное содержимое новости загружается в массив элементов, которые могут иметь тип:

  1. Заголовок (1-6 уровней)
  2. Текст
  3. Цитата
  4. Изображение
  5. Видео с Youtube

Элементы содержимого новости с другим типом игнорируются.

В классе объявляются константы USER_ID и FEED_ID, которые в дальнейшем инициализируются необходимыми значениями

Пример реализации создания новостей с элементами находится в components/parser/news/Example.php

Установка и запуск проекта

  1. Клонировать репозиторий
  2. Установить зависимости через Composer
  3. Добавить новый файл с классом парсера в components/parser/news
  4. Запустить консольную команду php yii parser/news {parser_classname}

При неуспешной валидации данных с парсера в консоль будут выведены ошибки

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published