<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DOMDocument | Wiki | PWODEV</title>
	<atom:link href="https://wiki.pwodev.com/tag/domdocument/feed/" rel="self" type="application/rss+xml" />
	<link>https://wiki.pwodev.com/tag/domdocument/</link>
	<description>Help for developers</description>
	<lastBuildDate>Fri, 09 Aug 2019 11:23:13 +0000</lastBuildDate>
	<language>ru-RU</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.1</generator>
	<item>
		<title>Парсер сайтов и контента &#8212; phpQuery</title>
		<link>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/</link>
					<comments>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/#respond</comments>
		
		<dc:creator><![CDATA[Paul Osmachko]]></dc:creator>
		<pubDate>Tue, 02 Jan 2018 16:19:11 +0000</pubDate>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[DOMDocument]]></category>
		<category><![CDATA[echo]]></category>
		<category><![CDATA[file_get_contents]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[parser]]></category>
		<category><![CDATA[phpQuery]]></category>
		<category><![CDATA[var_dump]]></category>
		<category><![CDATA[парсер]]></category>
		<guid isPermaLink="false">http://wiki.pwodev.com/?p=400</guid>

					<description><![CDATA[<p>Сегодня поговорим о том как сделать парсер сайтов на php или html tag parser. Задача получить контент сайта с помощью php, а дальше из полученного контента вытащить содержимое какого-либо тега или class или id. Например jQuery это хороший&#160;парсер контента. Тоесть чтобы получить какой-то элемент страницы достаточно знать только селектор этого элемента. Вообщем нам нужен такой [&#8230;]</p>
<p>Сообщение <a href="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/">Парсер сайтов и контента &#8212; phpQuery</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Сегодня поговорим о том как сделать парсер сайтов на php или html tag parser. Задача получить контент сайта с помощью php, а дальше из полученного контента вытащить содержимое какого-либо тега или class или id. Например jQuery это хороший&nbsp;парсер контента. Тоесть чтобы получить какой-то элемент страницы достаточно знать только селектор этого элемента. Вообщем нам нужен такой же парсер контента сайтов как jQuery но на php.</p>



<p>Для реализации этого есть php класс <a href="http://php.net/manual/class.domdocument.php" target="_blank" rel="noopener noreferrer">DOMDocument</a>. Этот&nbsp; класс php парсит html код как делает это обычный Javascript. Но чтобы упростить пользование класса DOMDocument есть библиотека&nbsp;phpQuery это аналог&nbsp;jQuery но на php.</p>



<p><a href="https://code.google.com/archive/p/phpquery/" target="_blank" rel="noopener noreferrer">Ссылка phpQuery на Google Code</a></p>



<p>Задание думаю понятно, теперь приступим к реализации php парсера.</p>



<h3 class="wp-block-heading">Парсер сайтов на&nbsp;phpQuery.</h3>



<p>Для начала скачиваем последнюю версию плагина phpQuery по <a href="https://code.google.com/archive/p/phpquery/downloads" target="_blank" rel="noopener noreferrer">этой ссылке</a>&nbsp;или из <a href="https://github.com/TobiaszCudnik/phpquery" target="_blank" rel="noopener noreferrer">репозитория</a>. Кладем файл в нужную директорию (в нашем случае в корень сайта). И подключаем библиотеку которая поможет нам парсить контент сайта.</p>



<pre class="wp-block-code"><code>include_once 'phpQuery.php';</code></pre>



<p>Итак библиотеку мы подключили. Теперь нам нужны демо данные. Для этого записываем в php переменную html код.</p>



<p>Статья <a href="http://wiki.pwodev.com/echo-large-html-code-in-php/" target="_blank" rel="noopener noreferrer">как записать в php переменную html код</a>.</p>



<pre class="wp-block-code"><code>$html = &lt;&lt;&lt;CONTENT
&lt;div class="test">
 &lt;h1>Title&lt;/h1>
 &lt;div class="content">Content&lt;/div>
&lt;/div>
CONTENT;</code></pre>



<p>Демо данные у нас есть. Мы сохранили их в переменную $html. Наша задача получить содержимое .content</p>



<p>Другой вариант можно также получить контент сайта по URL для того чтобы сделать парсер php функцией file_get_contents:</p>



<pre class="wp-block-code"><code>$html = file_get_contents('http://wiki.pwodev.com/');</code></pre>



<p>Добавляем демо данные или контент сайта в обьект модуля:</p>



<pre class="wp-block-code"><code>$document = phpQuery::newDocument($html);</code></pre>



<p>Теперь нам нужно парсить html код по тегу. Парсим контент следующей функцией:</p>



<pre class="wp-block-code"><code>$echo = $document->find('.content');</code></pre>



<p>Селектор такой же как и в jQuery или как в css. Все довольно просто. Теперь чтобы вывести полученное содержимое достаточно написать:</p>



<pre class="wp-block-code"><code>echo $echo;</code></pre>



<p>Если нам нужно вернуть html код этого класса а не вывести на экран используем следующий метод:&nbsp;<strong>$echo-&gt;htmlOuter();</strong></p>



<pre class="wp-block-code"><code>var_dump($echo->htmlOuter());

/* RESULT
string(34) "
&lt;div class="content">Content&lt;/div>
" 
*/</code></pre>



<p><strong>$echo-&gt;html();</strong> &#8212; вернет содержимое без родительского искомого класса. То есть без &#171;&lt;div class=&#187;content&#187;&gt;&lt;/div&gt;&#187;</p>



<p><strong>$echo-&gt;getString();</strong> &#8212; вернет массив текста без тегов.</p>



<p>Полный список методов есть в официальной документации этой библиотеки.</p>



<h3 class="wp-block-heading">Полный код сегодняшнего урока:</h3>



<pre class="wp-block-code"><code>&lt;?php
include_once 'phpQuery.php';

$html = &lt;&lt;&lt;CONTENT
&lt;div class="test">
 &lt;h1>Title&lt;/h1>
 &lt;div class="content">Content&lt;/div>
&lt;/div>
CONTENT;

$document = phpQuery::newDocument($html);
$echo = $document->find('.content');

var_dump($echo->html());</code></pre>



<p>Еще один пример использования:</p>



<pre class="wp-block-code"><code>&lt;?php
include_once 'phpQuery.php';

$html = file_get_contents('http://wiki.pwodev.com');

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

$echo_elements = $document->find('.post .title');

foreach ($echo_elements as $el) {
 $pq = pq($el); // Это аналог $ в jQuery

 $old_title = $pq->find('a')->getString()[0];
 $pq->find('a')->attr('href', 'http://wiki.pwodev.com/')->html('New title. Old - '.$old_title); // меняем атрибуты найденого элемента и контент

 $pq->find('div.remove_element')->remove(); // удаляем ненужный элемент

 $pq->find('a')->prepend('&lt;span>Title: &lt;/span>'); // добавляем контент в начало
 $pq->append('&lt;p>Next element&lt;/p>'); // добавляем контент в конец
}

var_dump($echo_elements->html());</code></pre>



<p>На этом пока все. Надеюсь всем было интересно и познавательно. Если кто-то хочет дополнить статью пишите в комментарии. Также добро пожаловать к нам в сообщество.</p>
<p><a class="a2a_button_facebook" href="https://www.addtoany.com/add_to/facebook?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Facebook" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_vk" href="https://www.addtoany.com/add_to/vk?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="VK" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_twitter" href="https://www.addtoany.com/add_to/twitter?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Twitter" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_linkedin" href="https://www.addtoany.com/add_to/linkedin?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="LinkedIn" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_skype" href="https://www.addtoany.com/add_to/skype?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="Skype" rel="nofollow noopener" target="_blank"></a><a class="a2a_button_whatsapp" href="https://www.addtoany.com/add_to/whatsapp?linkurl=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&amp;linkname=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" title="WhatsApp" rel="nofollow noopener" target="_blank"></a><a class="a2a_dd addtoany_share_save addtoany_share" href="https://www.addtoany.com/share#url=https%3A%2F%2Fwiki.pwodev.com%2F%25d0%25bf%25d0%25b0%25d1%2580%25d1%2581%25d0%25b5%25d1%2580-%25d1%2581%25d0%25b0%25d0%25b9%25d1%2582%25d0%25be%25d0%25b2-%25d0%25b8-%25d0%25ba%25d0%25be%25d0%25bd%25d1%2582%25d0%25b5%25d0%25bd%25d1%2582%25d0%25b0-phpquery%2F&#038;title=%D0%9F%D0%B0%D1%80%D1%81%D0%B5%D1%80%20%D1%81%D0%B0%D0%B9%D1%82%D0%BE%D0%B2%20%D0%B8%20%D0%BA%D0%BE%D0%BD%D1%82%D0%B5%D0%BD%D1%82%D0%B0%20%E2%80%94%20phpQuery" data-a2a-url="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/" data-a2a-title="Парсер сайтов и контента — phpQuery"></a></p><p>Сообщение <a href="https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/">Парсер сайтов и контента &#8212; phpQuery</a> появились сначала на <a href="https://wiki.pwodev.com">Wiki | PWODEV</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://wiki.pwodev.com/%d0%bf%d0%b0%d1%80%d1%81%d0%b5%d1%80-%d1%81%d0%b0%d0%b9%d1%82%d0%be%d0%b2-%d0%b8-%d0%ba%d0%be%d0%bd%d1%82%d0%b5%d0%bd%d1%82%d0%b0-phpquery/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
