Если вам необходимо регулярно парсить HTML, то тогда эта статья для Вас.
Шаг №1. Подготовка
Первое, что вам нужно сделать, это загрузить simpleHTMLdom библиотеку, которая свободно распространяется в SourceForge.
Там есть несколько файлов, но нам нужен simple_html_dom.php, остальные только примеры работы библиотеки.

Шаг 2. Разбор основ
$html = new simple_html_dom();
// Загрузка с рядка
$html->load('<html><body><p>Hello World!</p><p>We're here</p></body></html>');
// Загрузка с файла
$html->load_file('http://saitcreate.ru/');

<html> <body> <p>Hello World!</p> <p>We're Here.</p> </body> </html>
#создание и загрузка HTML
include('simple_html_dom.php');
$html = new simple_html_dom();
$html->load("<html><body><p>Hello World!</p><p>Мы здесь</p></body></html>");
# взять все элементы с второго <p></p>
$element = $html->find("p");
# изменяет
$element[1]->innertext .= " и здесь остались .";
# вывод!
echo $html->save();
Другие селекторы
Вот некоторые другие примеры селекторов.
# берет первый элемент id="foo"
$single = $html->find('#foo', 0);
$collection = $html->find('.foo');
# берет все элементы a
$collection = $html->find('a');
# берет все элементы H1
$collection = $html->find('h1 a');
# берет все img тега a title из 'himom'
$collection = $html->find('img[title=himom]');
Документация
Полную документацию по библиотеке можно найти на странице документации проекта.
Шаг 3. Реальный пример
Чтобы показать библиотеку в действии, мы напишем сценарий для быстрого парсинга содержания сайта saitcreate.ru.
<div style="text-align: left;">include('simple_html_dom.php');
$articles = array();
getArticles('http://saitcreate.ru/ocenka-vidimosti-sajta/');
<div class="post">
<div class="post-top">
</div>
<div class="entry clear">
</div>
</div>
Шаг 4. Пишем функцию для парсинга
function getArticles($page) {
global $articles;
$html = new simple_html_dom();
$html->load_file($page);
// ... more ...
}
В new simple_html_dom () мы загружаем нашу страницу.
Шаг 5. Поиск нужной нам информации

$items = $html->find('div[class=post]');
foreach($items as $post) {
$articles[] = array($post->children(0)->outertext,
$post->children(1)->first_child()->outertext);
}
Давайте теперь разберемся как это работает.
Линия 1: Создает массив элементов — DIV с классом post. Теперь у нас есть статьи, что хранятся в $ items.
Строка 5: Мы выбираем верхнюю часть статьи в данном случае children (0) и помещаем в переменную $articles .
Помните всегда нужно начинать считать с 0 дочерние элементы, как показано на рисунке вверху.
Шаг 6 Постраничная навигация
<a href="http://saitcreate.ru/ocenka-vidimosti-sajta/" class="more-link">»</a>
if($next = $html->find('a[class=more-link]', 0)) {
$URL = $next->href;
$html->clear();
unset($html);
getArticles($URL);
}
Шаг 7 Вывод результата
#main {
margin:80px auto;
width:500px;
}
h1 {
font:bold 40px/38px helvetica, verdana, sans-serif;
margin:0;
}
h1 a {
color:#600;
text-decoration:none;
}
p {
background: #ECECEC;
font:10px/14px verdana, sans-serif;
margin:8px 0 15px;
border: 1px #CCC solid;
padding: 15px;
}
.item {
padding:10px;}
Далее будет не большой кусочек php для вывода информации.
<?php
foreach($articles as $item) {
echo "<div class='item'>";
echo $item[0];
echo $item[1];
echo "</div>";
}
?>
В заключение к сведению хочу сказать прежде чем парсить сайт нужно получить разрешении.
Спасибо за чтение!
ВСЕ ДЛЯ НОВИЧКА
Мой блог находят по следующим фразам
- wordpress большой кеш долго удаляется
- Google API Fonts
- загрузка изображений в wordpress
- Все заставки
- блог wordpress форма регистрация
- joomla облако тегов
Popularity: 23% [?]






Twitter
Youtube
RSS