Парсинг на php. Основы

Парсинг на php. Основы

Что такое парсер? Парсер - это скрипт, который автоматически, по шаблону, собирает информацию с выбранного ресурса, и сохраняет, в удобном для нас виде. Например, нам нужно скачать 1000 статей с сайта кулинарных рецептов. И задача парсера заключается в том, чтобы автоматически собрать ссылки на все эти 1000 статей, перейти по каждой из них, и получить полезные для нас данные.

В общем случае, парсер получает html-разметку, из которой он извлекает полезную информацию, путём доступных ему средств (DOM-парсинг, регулярные выражения, и т.п.). И, вот, эту полезную информацию, мы, на выходе, и получаем, в чистом виде. Как обрабатывать её, тоже решать нам.

И так, можно выделить 3 основных этапа парсинга:

  1. HTTP-запрос на сайт, для получения разметки сайта
  2. Извлечение полезной информации из загруженной зразметки
  3. Формирование отчёта по найденным данным, и дальнейшая обработка

Для того, чтобы получить разметку сайта, нужно сделать http-запрос. Вот для этого, в PHP и существует такая программа, как CURL. Это программа, которая делает запрос к указанному серверу, с указанными нами параметрами (тело запроса, заголовки, cookies, метод запроса, и т.д.). На самом деле, эта программа используется и для отправки API-запросов, однако, большее распространение она получила именно в написании ботов, и парсеров. Для запросов к API, обычно используют функцию file_get_contents, вместе с надстройкой для отправки кастомных запросов.

Curl - это не какая-то часть PHP, которая есть только в нём. CURL - это отдельная, независимая программа, являющаяся браузером, управляемым из консоли. А PHP лишь имеет модуль, который упрощает работу с этой программой, и позволяет делать запросы на собственном синтаксисе.

На практике, парсеры бывают очень полезными. Так, с помощью них можно скачать все картинки с сайта, все видео, или все статьи.
Часто новые интернет-магазины, для автоматического наполнения товарами, как раз и пользуются парсерами, которые автоматизируют работу копирования товаров, или автоматическое обновление цен, в зависимости от цен конкурентов.

При этом, парсеры могут содержать дополнительную логику по преобразованию (удаление фрагментов текста, редактирование картинок, увеличение цены на определённый процент).

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

Второй вариант использования CURL - это боты, которые автоматизируют рутинные действия: авторизуются под вашим аккаунтом, забирают бонусы, автоматически добавляют посты, комментарии, переходят по ссылке из писем, и т.д. На самом деле, применение этих "зверушек" очень широкое, потому, знать это стоит, хотя бы основы. Уверен, что в личном опыте, эти знания сыграют вам хорошую службу.

Говоря о практическом применении, последним моим парсером был скрипт, копирующий видеоуроки с сайта, сохраняя каждый видеоурок в отдельную папку.

Ещё в начале пути я интересовался, как создать парсер на php. И, на удивление, это оказалось достаточно просто. Для того, чтобы понять, как парсеры работают внутри, прочитайте две вводных статьи:

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