Найти в Дзене
IT-Blog

PhpQuery парсер сайтов

phpQuery одна из самых популярных библиотек для парсинга сайтов. Она довольно быстрая и разобраться в ней не сложно, особенно если вы знакомы с ее старшим братом JavaScript библиотекой jQuery. phpQuery основана на DOM, и в ней так же как и в jQuery используются селекторы, атрибуты, события и др. Для начала необходимо скачать саму библиотеку отсюда или отсюда. Там же вы найдете документацию для разработчиков. И подключить ее в файле .php: include_once 'phpQuery.php'; Теперь попробуем получить и вывести текст из блока с определенным классом с какого-то сайта: <?php include_once 'phpQuery.php'; $link = file_get_contents('http://site.ru/'); // Указываем ссылку на сайт $document = phpQuery::newDocument($link); $div = $document->find('div.text'); // Ищем нужный тег $text = $div->html(); // Получаем содержимое echo $text; ?> Как видите все достаточно просто. Теперь полученными данными можно манипулировать как угодно. Краткий список основных методов, которые вам пригодятся: <? $div->html(); //

phpQuery одна из самых популярных библиотек для парсинга сайтов. Она довольно быстрая и разобраться в ней не сложно, особенно если вы знакомы с ее старшим братом JavaScript библиотекой jQuery.

phpQuery основана на DOM, и в ней так же как и в jQuery используются селекторы, атрибуты, события и др.

Для начала необходимо скачать саму библиотеку отсюда или отсюда. Там же вы найдете документацию для разработчиков.

-2

И подключить ее в файле .php:

include_once 'phpQuery.php';

Теперь попробуем получить и вывести текст из блока с определенным классом с какого-то сайта:

<?php

include_once 'phpQuery.php';

$link = file_get_contents('http://site.ru/'); // Указываем ссылку на сайт

$document = phpQuery::newDocument($link);

$div = $document->find('div.text'); // Ищем нужный тег

$text = $div->html(); // Получаем содержимое

echo $text;

?>

Как видите все достаточно просто. Теперь полученными данными можно манипулировать как угодно.

Краткий список основных методов, которые вам пригодятся:

<?

$div->html(); // Получить HTML содержимое

$div->text(); // Получить текст

$div->remove(); // Удалить элемент

$div->find('a'); // Найти вложенный элемент

$div->prepend('a'); // Добавить в начало

$div->attr('href'); // Получить атрибут

$div->attr('href', 'http://site.ru'); // Изменить атрибут

$div->wrap('<div class="new">'); // Обернуть снаружи

$div->wrapInner('<div class="new">'); // Обернуть внутри

?>

Если вы ищете не один, а несколько элементов, то они будут оформлены в массив. Например найти все ссылки на странице и вывести их по одной:

<?php

include_once 'phpQuery.php';

$link = file_get_contents('http://site.ru/'); // Указываем ссылку на сайт

$document = phpQuery::newDocument($link);

$links = $document->find('a'); // Ищем все ссылки

foreach ($links as $singleLink) {

echo $singleLink;

}

?>