Бесплатные CMS > Как создать сайт на PHP > Парсинг web-документов

Как удалить элемент в Simple HTML DOM Parser

Simple HTML DOM Parser - довольно известная библиотека, позволяющая быстро получать доступ к различным элементам HTML-документов. Она позволяет легко вычленить любой элемент web-документа, обратившись к его тегу, классу или ID. Однако в некоторых случаях, чтобы получить нужный контент со страницы намного проще удалить из нее всю ненужную информацию, что там есть, нежели собирать требуемый материал по кусочкам. Такое бывает в случае если код сайта является слишком грязным, так что, например, заголовок статьи находится в одном месте, после него следует множество кода, затем идет начало статьи, через несколько абзацев куча рекламы и виджетов и т.д.

Как удалить ненужные элементы в Simple HTML DOM Parser? Для этого нужно просто присвоить ему пустое значение. Например, если вам нужно удалить из документа всю информацию, содержащуюся в div с id comments, вам понадобится команда:

foreach($content->find("#comments") as $trash) $trash->outertext = '';

Удалить со страницы все скрипты можно так:

foreach($content->find(script) as $trash) $trash->outertext = '';

Шапку (head) документа:

foreach($content->find(head) as $trash) $trash->outertext = '';

Удалить div со всем его содержимым по его классу:

foreach($content->find(".menu") as $trash) $trash->outertext = '';

По ID:

foreach($content->find("#menu") as $trash) $trash->outertext = '';

Все элементы можно перечислить в одной строке:

foreach($content->find("script, head, .menu, #comments") as $trash) $trash->outertext = '';

После этого в переменной $content будет находится содержимое web-документа, исключая информацию, которой было присвоено пустое значение. После этого ее можно будет вывести в окно браузера командой echo или записать в файл функцией file_put_contents.

В качестве примера приведем код для обработки HTML-файлов:

<?php
include 'simple_html_dom.php'; // Подключаем Simple HTML DOM Parser
$dir = 'text'; // Указываем директорию с хранящимися web-документами, которые нужно обработать
$files = scandir($dir); // Добавляем все файлы в массив
$files = array_diff(scandir($dir), array('..', '.')); // Удаляем из массива точки
foreach ($files as &$file) { // Обходим каждый web-документ
$content = file_get_html (__DIR__ . '/text/'.$file); // Открываем
foreach($content->find("script, head, a, img, #comments, #popular-posts, .widget-area, .logo, .field, .widget, #top-sidebar, #middle-sidebar, .footer-cat, #search, #sidebar-ad3, .left, #bottom-sidebar, .topnav, #breadcrumb, #tab-sidebar, .bottom, .adtips, .meta-author, .meta-date, .meta-cat, .entry-meta, #top, #header") as $trash) $trash->outertext = ''; { // Обнуляем ненужную информацию
file_put_contents(__DIR__ . '/text2/'.$file, $content); // Кладем в файл в другой директории
}
$content->clear(); // Очищаем переменную
unset($content);
}
?>


Меню сайта

Как удалить элемент в Simple HTML DOM Parser
Как удалить элемент в Simple HTML DOM Parser