Simple html dom примеры. Парсинг HTML на PHP — Парсинг от А до Я. Получение html кода страницы
Потихоньку изучаю возможности PHP для создания парсеров. Я уже писала о том, как парсить xml на php с помощью SimpleXML . Сейчас расскажу об одном из способов парсинга html (он подойдет и для xml тоже, кстати). Повторю, что в php я не гуру, поэтому буду очень признательна, если вы оставите свои комментарии к поднятой теме.
Вы можете найти элементы по идентификаторам, классам, тегам и т.д. хотя это очень мощный и простой в использовании, вы должны быть осторожны с утечками памяти. Он возвращает объект или массив объектов. Эти объекты похожи на первый объект, поэтому вы можете использовать на них все функции класса.
Также допускаются селекторы потомков. Родительские, дочерние и дочерние элементы могут быть выбраны с помощью встроенных функций. Селекторы атрибутов также могут использоваться с простыми регулярными выражениями. Атрибуты - это фактически переменные объекта.
Побродив по нашим и англоязычным форумам, поняла, что спор о том, лучше ли парсить html регулярными выражениями или использовать для этих целей возможности PHP DOM , является холиваром. Сама же я пришла к выводу, что все зависит от сложности структуры данных. Ведь если структура достаточно сложная, то с помощью регулярок приходится парсить в несколько этапов: сначала выделить большой кусок, потом разделить его на более маленькие и т.д.. В итоге, если данные сложные (или их очень много), то процесс парсинга может значительно затянуться. Ресурсоемкость в этом случае еще будет зависеть, конечно же, от самих регулярных выражений. Если в регэкспах много ".*" (они являются самыми ресурсоемкими, т.к. "прочесывают" исходный код с максимальной жадностью), то замедление будет заметным.
Библиотеки для парсинга
Каждый объект имеет четыре специальных атрибута. Редактирование атрибутов аналогично чтению их значения. Утечки могут замедлить работу вашего сайта или даже сделать его непригодным для использования в течение нескольких минут. Таким образом, чтобы предотвратить это, каждый объект должен быть очищен перед загрузкой нового. Нет проблем работать с 2 или 3 объектами за раз, но если вы загружаете много объектов, не очищая предыдущие, это может быть проблемой. Объекты очищаются следующим образом.
Получение html кода страницы
Если вы извлекаете данные с внешних сайтов, используйте контент в соответствии с правилами справедливого использования. Следующий пример - очень упрощенное использование пакета. Он также показывает несколько вещей, которые вы можете сделать с узлом, но это не исчерпывающий список методов, которые могут иметь узлы. Вы также можете настроить параметр синтаксического анализа, который повлияет на поведение механизма синтаксического анализа.
И вот как раз в этом-то случае как нельзя кстати приходится PHP DOM. Это удобный инструмент для парсинга как XML, так и HTML. Некоторые придерживаются мнения, что парсить html регэкспами вообще нельзя, и яростно защищают PHP DOM.
В свою очередь я ознакомилась с этим расширением, написав простенький скрипт. Который и привожу здесь, чтобы наглядно показать, как это все легко и просто. В примере разбирается html с частью карты сайта этого блога. Он присвоен переменной прямо внутри кода. В "боевых" же условиях исходные данные следует получать, например, через file_get_contents().
На данный момент мы поддерживаем 7 вариантов. Это может иметь неблагоприятные последствия. Также можно удалить узел из дерева. Просто вызовите метод удаления на любом узле, чтобы удалить его из дерева. Пока данные доступны через ваш веб-браузер, вы всегда можете просто очистить его самостоятельно!
Пример парсера сообщений из twitter
Веб-соскабливание - это искусство сбора и анализа веб-документа для извлечения информации. Есть множество инструментов, которые можно было бы использовать для этого. Самый наивный способ - сделать это с помощью строковых операций и регулярных выражений.
$html = "
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Последние темы блога
http://parsing-and-i.blogspot.com/2009/08/blog-post_06.html | Базы |
http://parsing-and-i.blogspot.com/2009/08/mysql-delphi-express.html | MySQL и Delphi. Express-метод |
http://parsing-and-i.blogspot.com/2009/08/blog-post.html | Пост о том, что лучше сто раз проверить |