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 |