Паттерн для реализации задачи с парсерами

Пере до мной стоит следующая задача: есть несколько страниц на разных сайтах, с них нужно парсить данные, но нужно подобрать подходящий паттерн или хорошее решение в ООПшном стиле, чтобы в систему можно было легко внедрять новые сайты с которых будут парситься данные.

Т. е. есть сайт test1.ru, на него идет запрос, под этот сайт создается подходящий объект парсера, в который передаются данные со страницы, где они обрабатываются в соответствии с разметкой.

Далее добавляется новый сайт test2.ru, в общем скрипте, где происходит сбор данных со всех сайтов ему создается свой объект парсера (например, исходя из доменного имени сайта).

Для всех парсеров есть интерфейс, где должен быть например метод parse(), который будет возвращать массив строк.

Таким образом, в главном скрипте, где создаются парсеры, нужно только добавить ссылку на страницу, которую будем парсить, а дальше соответствующий ей объект парсера создастся сам и вызовет метод parse().

Думал, что стоит использовать фабрику, которая будет создавать объекты парсеров на основании ссылки.

Например:

$links = [test1.ru, $test2.ru]
$data = []
foreach ($links as $link) {
    $data[] = (new ParserFactory($link))->parse()
}

Может есть более хорошее решение?


Ответы (0 шт):