Эта статья предназначена не для полнейших новичков. Скорее это сборник практик, которые позволяют лучше организовать.
Сам по себе парсер очень прост, зачастую сложность заключается только в обходе авторизации или вычленении конкретной информации с сайта.
Несколько простых правил:
- Выделяйте парсер и обработку данных в разные классы.
- В самом парсере никаким образом не нужно обрабатывать данные, в идеале один метод должен возвращать данные с одной страницы.
- Обрабатывайте данные после их сбора, но никак не во время парсинга (никакого сохранения данных, пока парсер не получит целостные).
Для парсинга страниц я использую класс 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); } }