Как написать парсер на php
Опубликовано: 01.09.2018
Эта статья предназначена не для полнейших новичков. Скорее это сборник практик, которые позволяют лучше организовать.
[PHP] Часть 27. Пишем парсер (граббер)
Сам по себе парсер очень прост, зачастую сложность заключается только в обходе авторизации или вычленении конкретной информации с сайта.
Несколько простых правил:
Выделяйте парсер и обработку данных в разные классы. В самом парсере никаким образом не нужно обрабатывать данные, в идеале один метод должен возвращать данные с одной страницы. Обрабатывайте данные после их сбора, но никак не во время парсинга (никакого сохранения данных, пока парсер не получит целостные).Для парсинга страниц я использую класс PHPQuery. Удобный класс с jquery-like апи к данным. Главный минус — большое потребление памяти и не очень высокая скорость работы. Если критично, можно смотреть в сторону sax и т.п.
Как правило, сам парсер я называю ParserNazvanieSaita, а обработчик — ImportNazvanieSaita.
Общая структура класса Parser:
class Parser { public function parseProductPage($url) { $page = $this->loadPage($url); $data = array( ); return $data; } protected function loadPage() { return $page; } protected function unloadPage($page) { pq_unload_document($page); } }