Php simple html dom parser как подключить

Содержание
  1. PHP парсинг с помощью Simple HTML DOM
  2. PHP парсинг HTML, с помощью simple HTML DOM
  3. Шаг 1 – Подготовка
  4. Шаг 2 – Основы HTML парсинга
  5. Загрузка HTML
  6. Получение доступа к HTML DOM объектам
  7. Другие селекторы
  8. Документация библиотеки simple HTML DOM
  9. Шаг 3 – Реальный пример PHP парсинга HTML документа
  10. Шаг 4 – Пишем основную функцию PHP парсера HTML
  11. Шаг 5 – Находим нужную информацию
  12. Шаг 6 – Выводим результат парсинга
  13. Заключение
  14. Парсинг HTML и скрепинг с помощью простой библиотеки HTML DOM
  15. Шаг 1. Подготовка
  16. Шаг 2. Основы парсинга
  17. Загрузка HTML
  18. Доступ к информации
  19. Другие селекторы
  20. Документация
  21. Шаг 3. Пример из реального мира
  22. Шаг 4. Начало функции парсинга
  23. Шаг 5. Находим ту информацию, которая нам нужна
  24. Шаг 6, Работа со страницами
  25. Шаг 7. Вывод результатов
  26. Шаг 8. Заключение
  27. 5 последних уроков рубрики «PHP»
  28. Фильтрация данных с помощью zend-filter
  29. Контекстное экранирование с помощью zend-escaper
  30. Подключение Zend модулей к Expressive
  31. Совет: отправка информации в Google Analytics через API
  32. Подборка PHP песочниц

PHP парсинг с помощью Simple HTML DOM

Парсинг HTML документа всегда будет являться актуальной темой. Поэтому давайте разберем самый универсальный способ реализации парсера на PHP с помощью библиотеки Simple HTML DOM.

В большинстве случаев для процесса парсинга используют регулярные выражения. Но это не самый лучший способ в связи с трудоемким процессом написания и уменьшения скорости работы PHP приложения. Мы будем использовать библиотеку Simple HTML DOM, с помощью которой можно обращаться к элементам и атрибутам элементов, искать определенного уровня вложенные элементы, фильтровать их, искать текст и комментарии.

Сайт поддержки: PHP Simple HTML DOM Parser. Ссылка на скачивания доступна в меню «Download & Documents«. В архиве содержаться примеры и документация. Нам необходимо подключить файл Simple_html_dom.php, чтобы работать с функциями данной библиотеки.

Сначала необходимо создать объект для работы. Данное действие может происходить путем загрузки из текстовой строки строки либо файла, который являет собой URL адрес в интернете:
Метод Load_file работает на использовании PHP функции File_get_contents, поэтому директива Allow_url_fopen должна быть включена, иначе вы не сможете получать HTML файлы по удаленному адресу.

Если вы сразу увидите одну из ошибок:
Замените в файле «simple_html_dom.php» реализацию функции «file_get_contents» (для версии 1.5 — срока №75 ) на:
Не будем углубляться в сущность данных ошибок, вы просто заменяете данную строку и все работает.

Для примера возьмем самый простой HTML документ:
Создадим коллекцию (группы объектов, найденные с помощью селекторов) на тег заголовка «H1«. Для этого необходимо использовать метод Find:
Для изменения информации можно использовать атрибут Innertext:
Выполним добавления класса для заголовка H1:
Также, мы можем вывести результат на дисплей:
Вот мы разобрали самый простой способ использования библиотеки Simple HTML DOM. Метод Find находит все теги в HTML коде, и сохраняет в переменной в виде массива. Атрибут Innertext вносит изменения в текст, то есть меняет все содержимое внутри указанного тега. Атрибут Class добавляет определенный класс к данному тегу. Метод Save сохраняет изменения. Результатом выполнения нашего кода будет следующий HTML документ:
Теперь давайте разберем, как получать информацию из других селекторов. Для этого нам необходимо в методе Find указывать более конкретную информацию. Например, получить все элементы с class=»post»:
Для получения первого элемента с class=»post», необходимо добавить его номер после указания класса. Первый элемент в массиве имеет индекс — 0:
Поиск может осуществляться и у вложенных тегов, для этого необходимо указать более развернутую структуру поиска, например:
Поиск заголовка, описания и ключевых слов страницы осуществляется так:
В данной статье мы описали только основные понятия библиотеки Simple HTML DOM. Для более подробного ознакомления перейдите на страницу Мануала.

Источник

PHP парсинг HTML, с помощью simple HTML DOM

Просто следуйте всем шагам статьи, и узнаете много нового и полезного для себя!

READ  Мегафон как подключить мобильный интернет за 5 рублей в сутки

Шаг 1 – Подготовка

Для начала, вам необходимо скачать копию simple HTML dom библиотеки. Скачивание свободно.

Шаг 2 – Основы HTML парсинга

Эта библиотека, очень проста в использовании, но все же, необходимо разобрать некоторые основы, перед тем как ее использовать.

Загрузка HTML

Все просто, вы можете создать объект, загружая HTML из строки. Или, загрузить HTML код из файла. Загрузить файл вы можете по URL адресу, или с вашей локальной файловой системы (сервера).

Важно помнить: Метод load_file(), работает на использовании PHP функции file_get_contents. Если в вашем файле php.ini, параметр allow_url_fopen не установлен как true, вы не сможете получать HTML файлы по удаленному адресу. Но, вы сможете загрузить эти файлы, используя библиотеку CURL. Далее, прочитать содержимое, используя метод load().

Получение доступа к HTML DOM объектам

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

Используя этот пример HTML кода, мы узнаем, как получить доступ к информации заключенной во втором параграфе (p). Также, мы изменим полученную информацию и выведем результат на дисплей.

Как видите реализовать PHP парсинг документа HTML, очень даже просто, используя simple HTML DOM библиотеку. В принципе, в этом куске PHP кода, все можно понять интуитивно, но если вы в чем-то сомневаетесь, мы рассмотрим код.

Линия 2-4: подключаем библиотеку, создаем объект класса и загружаем HTML код из строки.

Линия 7: С помощью данной строки, находим все

теги в HTML коде, и сохраняем в переменной в виде массива. Первый параграф будет иметь индекс 0, остальные параграфы будут индексированы соответственно 1,2,3…

Линия 10: Получаем содержимое второго параграфа в нашей коллекции. Его индекс будет 1. Также мы вносим изменения в текст с помощью атрибута innertext. Атрибут innertext, меняет все содержимое внутри указанного тега. Также мы сможем изменить сам тег с помощью атрибута outertext.

Давайте добавим еще одну строку PHP кода, с помощью которой мы назначим класс стиля нашему параграфу.

Результатом выполнения нашего кода будет следующий HTML документ:

Другие селекторы

Ниже приведены другие примеры селекторов. Если вы использовали jQuery, то в библиотеке simple html dom синтаксис немножко схожий.

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

Документация библиотеки simple HTML DOM

Полнейшую документацию по использованию библиотеки simple HTML DOM вы сможете найти по этому адресу:

Просто предоставлю вам иллюстрацию, которая показывает возможные свойства выбранного HTML DOM элемента.

Шаг 3 – Реальный пример PHP парсинга HTML документа

Для примера парсинга, и приведения HTML DOM библиотеки в действие, мы напишем грабер материалов на сайте sitear.ru. Далее мы выведем все статьи в виде списка, в котором будут указаны названия статей. При написании граберов, помните, кража контента преследуется законом! Но не в случае, когда на странице стоит активная ссылка на исходный документ.

Начинаем с подключения библиотеки, и вызова функции getArticles, которая будет парсить HTML документы соответственно адресу страницы, которая передается в качестве параметра функции.

Также мы указываем глобальный массив, в котором будет, хранится вся информация о статьях. Перед тем как начать парсинг HTML документа, давайте посмотрим, как он выглядит.

Шаг 4 – Пишем основную функцию PHP парсера HTML

Вначале функции, мы вызываем наш глобальный массив, который мы указали ранее. Создаем новый объект simple_html_dom. Далее загружаем страницу, которую будем парсить.

READ  Как подключить фул эйч ди к телевизору

Шаг 5 – Находим нужную информацию

В этом куске кода все предельно просто, мы находим все div с class=name_material. Далее читаем коллекцию элементов и выбираем названия материалов. Все материалы будут сохранены в массиве в данном виде:

Шаг 6 – Выводим результат парсинга

Для начала, мы установим некоторые стили, для красоты выводимой информации, которую получили при парсинге.

Далее, с помощью нескольких строк PHP кода, мы выведем информацию.

Результатом выполнения данного скрипта, будет список названий статей на сайте sitear.ru.

Заключение

Вот мы и научились php парсингу html документов. Помните, что парсинг это долгий процесс. Одна страница может парситься около одной секунды. Если вы будете делать парсинг большого числа HTML документов, ваш сервер может перервать работу скрипта в связи с истечением время отведенного для выполнения. Это можно исправить с помощью функции set_time_limit(240); 240 – это время в секундах, отведенное на выполнение скрипта.

Эта статья предназначена для формирования основных понятий парсинга HTML страницы с помощью PHP. Существуют и другие библиотеки и методы парсинга. Если вы знаете таковые, поделитесь в комментариях. Буду рад, узнать какими инструментами и методами html парсинга пользуетесь вы.

Источник

Парсинг HTML и скрепинг с помощью простой библиотеки HTML DOM

Если вам нужно организовать парсинг HTML, то регулярные выражения мало помогут. В данном уроке вы узнаете как использовать простой парсер с открытым кодом для того, чтобы прочитать, модифицировать и использовать HTML с внешнего источника. В качестве примера будет использоваться сайт net.tutsplus.com. Вы узнаете, как получить список всех статей, опубликованных на сайте.

Шаг 1. Подготовка

В первую очередь нужно скопировать библиотеку simpleHTMLdom, которая доступна на сайте sourceforge.net.

Шаг 2. Основы парсинга

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

Загрузка HTML

Вы можете создать исходный объект загрузив HTML либо из строки, либо из файла. Загрузка из файла может быть выполнена либо через указание URL, либо из вашей локальной файловой системы.

Примечания: Метод load_file() делегирует работу функции PHP file_get_contents. Если allow_url_fopen не установлен в значение true в вашем файле php.ini, то может отсутствовать возможность открывать удаленные файлы таким образом. В этом случае вы можете вернуться к использованию библиотеки CURL для загрузки удаленных страниц, а затем прочитать с помощью метода load().

Доступ к информации

В данном примере HTML мы собираемся разобраться, как получить доступ к информации во втором параграфе, изменить ее и затем вывести результат действий.

Строки 2-4: Загружаем HTML из строки, как объяснялось выше.

Строка 6: Находим все тэги

в HTML, и возвращаем их в массив. Первый параграф будет иметь индекс 0, а последующие параграфы индексируются соответственно.

Строка 8: Получаем доступ ко второму элементу в нашей коллекции параграфов (индекс 1), добавляем текст к его атрибуту innertext. Атрибут innertext представляет содержимое между тэгами, а атрибут outertext представляет содержимое включая тэги. Мы можем заменить тэг полностью, используя атрибут outertext.

Теперь добавим одну строку и модифицируем класс тэга нашего второго параграфа.

Окончательный вид HTML после команды save будет иметь вид:

Другие селекторы

Несколько других примеров селекторов. Если вы использовали jQuery, все покажется вам знакомым.

Первый пример требует пояснений. Все запросы по умолчанию возвращают коллекции, даже запрос с ID, который должен вернуть только один элемент. Однако, задавая второй параметр, мы говорим “вернуть только первый элемент из коллекции”.

Остальные примеры достаточно очевидны.

Документация

Полная документация по библиотеке доступна на странице проекта.

Шаг 3. Пример из реального мира

Для демонстрации библиотеки в действии мы напишем скрипт для скрепинга содержимого сайта net.tutsplus.com и формирования списка заголовков и описания статей, представленных на сайте….только в качестве примера. Скрепинг относится к области трюков в веб, и не должен использоваться без разрешения владельца ресурса.

READ  Как подключить интернет мтс на телефон microsoft

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

Так же объявим глобальный массив, чтобы сделать проще сбор все информации о статьях в одном месте. Прежде чем начинать парсинг взглянем, как описывается статья на сайте Nettuts+.

Так представлен основой формат поста на сайте, включая комментарии исходного кода. Почему важны комментарии? Они подсчитываются парсером как узлы.

Шаг 4. Начало функции парсинга

Начинаем с объявления глобального массива, создаем новый объект simple_html_dom, и затем загружаем страницу для парсинга. Данная функция будет рекурсивно вызываться, поэтому устанавливаем для нее в качестве параметра URL страницы.

Шаг 5. Находим ту информацию, которая нам нужна

Это суть функции getArticles. Нужно разобраться более детально, чтобы понять, что происходит.

Строка 1: Создаем массив элементов – тег div с классом preview. Теперь у нас есть коллекция статей, сохраненная в $items.

Помните о начале отсчета с 0 и учете комментариев исходного кода, когда будете определять правильный индекс узла.

Шаг 6, Работа со страницами

первым делом нужно определить, как найти следующую страницу. На сайте Nettuts+ о номере страницы очень легко догадаться по URL, но нам нужно получать ссылку в парсинге.

Если посмотреть на HTML, то можно найти следующее:

Это сслыка на следующую страницу, и мы можем легко ее найти по классу ‘nextpostslink’. Теперь эта информация может быть использована.

В первой строке мы проверяем, можно ли найти ссылку с классом nextpostslink. Отметим использование второго параметра в функции find(). Таким образом мы указываем, что хотим получить первый элемент (индекс 0) в возвращаемой коллекции. $next содержит единичный элемент, а не коллекцию.

В завершение, мы вызываем функцию getArticles с URL следующей страницы. Рекурсия прерывается, когда не остается страниц для парсинга.

Шаг 7. Вывод результатов

Затем мы пишем маленькую функцию на PHP в странице для вывода предварительно сохраненной информации.

Шаг 8. Заключение

Если Вы запускаете парсинг для большого количества страниц (скажем, весь сайт), то это может занять много времени. На таком сайте как Nettuts+, который имеет боле 86страниц, процесс парсинга может длиться более минуты.

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

Данный урок подготовлен для вас командой сайта ruseller.com
Источник урока: www.net.tutsplus.com
Перевел: Сергей Фастунов
Урок создан: 12 Июля 2010
Просмотров: 95699
Правила перепечатки

5 последних уроков рубрики «PHP»

Фильтрация данных с помощью zend-filter

Когда речь идёт о безопасности веб-сайта, то фраза «фильтруйте всё, экранируйте всё» всегда будет актуальна. Сегодня поговорим о фильтрации данных.

Контекстное экранирование с помощью zend-escaper

Обеспечение безопасности веб-сайта — это не только защита от SQL инъекций, но и протекция от межсайтового скриптинга (XSS), межсайтовой подделки запросов (CSRF) и от других видов атак. В частности, вам нужно очень осторожно подходить к формированию HTML, CSS и JavaScript кода.

Подключение Zend модулей к Expressive

Expressive 2 поддерживает возможность подключения других ZF компонент по специальной схеме. Не всем нравится данное решение. В этой статье мы расскажем как улучшили процесс подключение нескольких модулей.

Совет: отправка информации в Google Analytics через API

Предположим, что вам необходимо отправить какую-то информацию в Google Analytics из серверного скрипта. Как это сделать. Ответ в этой заметке.

Подборка PHP песочниц

Подборка из нескольких видов PHP песочниц. На некоторых вы в режиме online сможете потестить свой код, но есть так же решения, которые можно внедрить на свой сайт.

Источник

Как подключить и установить...
Adblock
detector