Как сделать парсер контента на PHP
У многих из Вас возникают вопросы по поводу создания парсера на PHP. Например, есть какой-то сайт, и Вам необходимо получить с него контент. Я долго не хотел писать эту статью, поскольку конкретного смысла в ней нет. Чтобы сделать парсер на PHP, нужно знать этот язык. А те, кто его знает, такой вопрос просто не зададут. Но в этой статье я расскажу, как вообще создаются парсеры, а также, что конкретно нужно изучать.
Итак, вот список пунктов, которые необходимо пройти, чтобы создать парсер контента на PHP:
- Получить содержимое страницы и записать его в строковую переменную. Наиболее простой вариант - это функция file_get_contents(). Если контент доступен только авторизованным пользователям, то тут всё несколько сложнее. Здесь уже надо посмотреть, каков механизм авторизации. Далее, используя cURL, отправить правильный запрос на форму авторизации, получить ответ и затем отправить правильные заголовки (например, полученный идентификатор сессии), а также в этом же запросе обратиться к той странице, которая нужна. Тогда уже в этом ответе Вы получите конечную страницу.
- Изучить структуру страницы. Вам нужно найти контент, который Вам необходим и посмотреть, в каком блоке он находится. Если блок, в котором он находится не уникален, то найти другие общие признаки, по которым Вы однозначно сможете сказать, что если строка удовлетворяет им, то это то, что Вам и нужно.
- Используя строковые функции, достать из исходной строки нужный Вам контент по признакам, найденным во 2-ом пункте.
Отмечу так же, что всё это поймёт и сможет применить на практике только тот, кто знает PHP. Поэтому те, кто его только начинает изучать, Вам потребуются следующие знания:
- Строковые функции.
- Библиотека cURL, либо её аналог.
- Отличное знание HTML.
Те же, кто ещё вообще не знает PHP, то до парсеров в этом случае ещё далеко, и нужно изучать всю базу. В этом Вам поможет мой курс, либо какие-нибудь книги по PHP.
Безусловно, Америки я в этой статье не открыл, но слишком много вопросов по теме парсеров, поэтому этой статьёй я постарался лишь дать развёрнутый ответ.
-
- Михаил Русаков
Комментарии (6):
Первым делом стоит поинтересоваться, есть ли у сервиса, откуда вы хотите доставать данные, специальный API для извлечения данных. Тогда всё значительно проще, надо только отправить запрос на него и прочитать данные. А если нету API, то да, всё как в этой статье.
Ответить
Ага, так тебе и предоставили, как частному лицу для себя.
Ответить
Почему же, на крупных сервисах вроде YouTube и VK выложены руководства по извлечению данных с API, на VK их даже искать не надо, а вот на YouTube они лежат далеко и там не всё на русском, но разобраться можно. Так что можно там обойтись и без шаманств, да и кроме того, некоторые данные можно достать только через API.
Ответить
В том и дело, что мне не нужен ютуб или вк. Тут надо парсить напрямую с кода. В начале 2000-х я уже делал такое с внесением в базу SQL.
Ответить
Значит, мы просто пишем о разных вещах. Но с течением времени даже у многих мелких сайтов будут появляться (или уже появились) встроенные API-сервисы, потому что у них есть приложения для iOS или Android, которые работают через API. Кроме того, такие механизмы есть у крупных CMS, где тоже некоторые данные можно получить либо с API, либо через RSS/Atom. Так что логичнее использовать вещи, которые легче реализовать и которые менее требовательны по ресурсам. Парсинг во многих случаях не обязателен или лучше его комбинировать с теми методами, о которых я написал выше, хотя в вашем конкретном случае парсинг может быть и единственным выходом. Да, и если Вы не нашли, где у сайта API или его описание, это не значит, что его там нет :)
Ответить
Я давно не занимался программированием в силу других приоритетов. Библиотеку cURL поднял на серваке и попробую на днях пошаманить с бубном. За совет спасибо сразу, а то ломал голову как обойти авторизацию. Просто надоело смотреть где что новое из фильмов появилось. Лично для себя скриптик написать со сбросом на мыло. Вот ссылку на разработчика с мэньюалом могли бы и сразу вписать :)
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.