0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>Parsing - это…</a><ul><li><a>Для чего необходим</a></li>
1
<ul><li><a>Parsing - это…</a><ul><li><a>Для чего необходим</a></li>
2
<li><a>Основа функционирования</a></li>
2
<li><a>Основа функционирования</a></li>
3
</ul></li>
3
</ul></li>
4
<li><a>Почему PHP</a></li>
4
<li><a>Почему PHP</a></li>
5
<li><a>Parse URL - особенности</a><ul><li><a>О параметрах</a></li>
5
<li><a>Parse URL - особенности</a><ul><li><a>О параметрах</a></li>
6
<li><a>Возвращаемые значения</a></li>
6
<li><a>Возвращаемые значения</a></li>
7
</ul></li>
7
</ul></li>
8
<li><a>Наглядные примеры - CURL и phpQuery</a><ul><li><a>Предварительная подготовка</a></li>
8
<li><a>Наглядные примеры - CURL и phpQuery</a><ul><li><a>Предварительная подготовка</a></li>
9
<li><a>CURL и парсинг</a></li>
9
<li><a>CURL и парсинг</a></li>
10
<li><a>PhpQuery - принцип работы</a></li>
10
<li><a>PhpQuery - принцип работы</a></li>
11
</ul></li>
11
</ul></li>
12
</ul><p><a>Серверная разработка</a>требует от программиста определенного спектра знаний и навыков. Весьма полезным покажется парсер. Главное разобраться, каким образом его реализовать на PHP.</p>
12
</ul><p><a>Серверная разработка</a>требует от программиста определенного спектра знаний и навыков. Весьма полезным покажется парсер. Главное разобраться, каким образом его реализовать на PHP.</p>
13
<p>Статья расскажет о том, что такое парсинг, для чего он нужен и как функционирует. В ней будут приведены наглядные примеры, которые пригодятся для любого URL при веб-разработке.</p>
13
<p>Статья расскажет о том, что такое парсинг, для чего он нужен и как функционирует. В ней будут приведены наглядные примеры, которые пригодятся для любого URL при веб-разработке.</p>
14
<h2>Parsing - это…</h2>
14
<h2>Parsing - это…</h2>
15
<p>Парсер - программное обеспечение, которое осуществляет анализ входных текстовых сведений. После этого занимается извлечением необходимой информации, на основе которых будет производиться результат в заранее заданном формате.</p>
15
<p>Парсер - программное обеспечение, которое осуществляет анализ входных текстовых сведений. После этого занимается извлечением необходимой информации, на основе которых будет производиться результат в заранее заданном формате.</p>
16
<p>На PHP parser работает так:</p>
16
<p>На PHP parser работает так:</p>
17
<ul><li>скрипт создает запрос по URL;</li>
17
<ul><li>скрипт создает запрос по URL;</li>
18
<li>осуществляется получение ответа от сервера в виде HTML или ином текстовом формате;</li>
18
<li>осуществляется получение ответа от сервера в виде HTML или ином текстовом формате;</li>
19
<li>сведения анализируются;</li>
19
<li>сведения анализируются;</li>
20
<li>из электронных материалов URL извлекаются (парсятся) нужные элементы;</li>
20
<li>из электронных материалов URL извлекаются (парсятся) нужные элементы;</li>
21
<li>формируется и выводится результат.</li>
21
<li>формируется и выводится результат.</li>
22
</ul><p>Итог можно записывать в файлы и базы данных, а также непосредственно выводить на дисплей устройства.</p>
22
</ul><p>Итог можно записывать в файлы и базы данных, а также непосредственно выводить на дисплей устройства.</p>
23
<h3>Для чего необходим</h3>
23
<h3>Для чего необходим</h3>
24
<p>При изучении парсеров в PHP стоит выяснить, для чего они вообще нужны. Подобное программное обеспечение:</p>
24
<p>При изучении парсеров в PHP стоит выяснить, для чего они вообще нужны. Подобное программное обеспечение:</p>
25
<ol><li>Автоматизируют информацию в пределах URL.</li>
25
<ol><li>Автоматизируют информацию в пределах URL.</li>
26
<li>Собирают и обрабатывают<a>большие объемы</a>данных.</li>
26
<li>Собирают и обрабатывают<a>большие объемы</a>данных.</li>
27
<li>Сравнивают содержимое страниц с заданными параметрами. Пример - поисковые системы.</li>
27
<li>Сравнивают содержимое страниц с заданными параметрами. Пример - поисковые системы.</li>
28
<li>Помогают организовывать спам-рассылку.</li>
28
<li>Помогают организовывать спам-рассылку.</li>
29
</ol><p>А еще парсером на PHP можно наполнять собственные веб-ресурсы "чужим" контентом. Подобные проекты стараются блокировать, но это не всегда выходит быстро.</p>
29
</ol><p>А еще парсером на PHP можно наполнять собственные веб-ресурсы "чужим" контентом. Подобные проекты стараются блокировать, но это не всегда выходит быстро.</p>
30
<p>Parser избавляет от перепечатывания информации однотипного характера. Пример - наполнение интернет-магазина тем или иным товаром.</p>
30
<p>Parser избавляет от перепечатывания информации однотипного характера. Пример - наполнение интернет-магазина тем или иным товаром.</p>
31
<h3>Основа функционирования</h3>
31
<h3>Основа функционирования</h3>
32
<p>Если мы парсим текст, не стоит думать, что парсер будет его читать. Соответствующее ПО:</p>
32
<p>Если мы парсим текст, не стоит думать, что парсер будет его читать. Соответствующее ПО:</p>
33
<ul><li>получает набор команд и инструкций от разработчика;</li>
33
<ul><li>получает набор команд и инструкций от разработчика;</li>
34
<li>считывает слова;</li>
34
<li>считывает слова;</li>
35
<li>сравнивает то, что обнаружено в Сети согласно заданным принципам.</li>
35
<li>сравнивает то, что обнаружено в Сети согласно заданным принципам.</li>
36
</ul><p>Далее происходит непосредственная обработка. То, как робот ведет себя с информацией командной строки, носит название регулярного выражения. В русском языке также встречается в виде понятий "маски" и "шаблоны".</p>
36
</ul><p>Далее происходит непосредственная обработка. То, как робот ведет себя с информацией командной строки, носит название регулярного выражения. В русском языке также встречается в виде понятий "маски" и "шаблоны".</p>
37
<p>Для того, чтобы парсер воспринимал регулярные выражения, он должен быть составлен на языке, который поддерживает оные при использовании строк. PHP - один из вариантов, который пользуется спросом.</p>
37
<p>Для того, чтобы парсер воспринимал регулярные выражения, он должен быть составлен на языке, который поддерживает оные при использовании строк. PHP - один из вариантов, который пользуется спросом.</p>
38
<p>Регулярные выражения для URL прописываются через синтаксис<a>Unix</a>. Он уже устарел и редко применяется на практике при разработке софта. Но за счет свойств обратной совместимости по сей день Юникс задействован программистами и системными администраторами.</p>
38
<p>Регулярные выражения для URL прописываются через синтаксис<a>Unix</a>. Он уже устарел и редко применяется на практике при разработке софта. Но за счет свойств обратной совместимости по сей день Юникс задействован программистами и системными администраторами.</p>
39
<p>За счет Unix можно регулировать активность parsing. В зависимости от соответствующего значения будет меняться длина строки, копируемой с веб-страницы. Сверхжадный парсинг может считывать весь контент, а также HTML-кодификацию и внешние таблицы CSS.</p>
39
<p>За счет Unix можно регулировать активность parsing. В зависимости от соответствующего значения будет меняться длина строки, копируемой с веб-страницы. Сверхжадный парсинг может считывать весь контент, а также HTML-кодификацию и внешние таблицы CSS.</p>
40
<h2>Почему PHP</h2>
40
<h2>Почему PHP</h2>
41
<p>PHP -<a>язык программирования</a>, который используется для работы с веб-контентом. Позволяет создавать разнообразный софт: от бизнес-аналитики до игр. Его функции позволяют контактировать с парсерами максимально комфортно:</p>
41
<p>PHP -<a>язык программирования</a>, который используется для работы с веб-контентом. Позволяет создавать разнообразный софт: от бизнес-аналитики до игр. Его функции позволяют контактировать с парсерами максимально комфортно:</p>
42
<ol><li>Наличие библиотеки libcurl. Она отвечает за подключение<a>скрипта</a>ко всем видам серверов (даже при работе с http протоколами).</li>
42
<ol><li>Наличие библиотеки libcurl. Она отвечает за подключение<a>скрипта</a>ко всем видам серверов (даже при работе с http протоколами).</li>
43
<li>Поддержка регулярных выражений. За их счет парсер осуществляет обработку информации.</li>
43
<li>Поддержка регулярных выражений. За их счет парсер осуществляет обработку информации.</li>
44
<li>Наличие библиотеки DOM, используемой для работы<a>с XML</a>-расширяемым языком разметки текста. Он пригодится при выводе результатов обработки информации.</li>
44
<li>Наличие библиотеки DOM, используемой для работы<a>с XML</a>-расширяемым языком разметки текста. Он пригодится при выводе результатов обработки информации.</li>
45
<li>Высокая совместимость с HTML.</li>
45
<li>Высокая совместимость с HTML.</li>
46
</ol><p>При запуске URL сайта и внедрения парсера PHP станет настоящим спасением. Это не слишком сложный, но очень мощный язык.</p>
46
</ol><p>При запуске URL сайта и внедрения парсера PHP станет настоящим спасением. Это не слишком сложный, но очень мощный язык.</p>
47
<h2>Parse URL - особенности</h2>
47
<h2>Parse URL - особенности</h2>
48
<p>Parse_url - функция, которая разбирает URL, а затем осуществляет возврат его компонентов. Применяется в PHP 4, 5, 7.</p>
48
<p>Parse_url - функция, которая разбирает URL, а затем осуществляет возврат его компонентов. Применяется в PHP 4, 5, 7.</p>
49
<p>Стоит запомнить ее следующие особенности:</p>
49
<p>Стоит запомнить ее следующие особенности:</p>
50
<ul><li>mixed parse_url (string $url [<a>int</a>$component = -1]) - функция, которая разбирает URL и возвращает ассоциативный массив со всеми компонентами соответствующего адрес в Сети;</li>
50
<ul><li>mixed parse_url (string $url [<a>int</a>$component = -1]) - функция, которая разбирает URL и возвращает ассоциативный массив со всеми компонентами соответствующего адрес в Сети;</li>
51
<li>не позволяет проверять корректность URL;</li>
51
<li>не позволяет проверять корректность URL;</li>
52
<li>разбивает адрес на части.</li>
52
<li>разбивает адрес на части.</li>
53
</ul><p>Parse_url старается разобрать частичные URL предельно корректно.</p>
53
</ul><p>Parse_url старается разобрать частичные URL предельно корректно.</p>
54
<h3>О параметрах</h3>
54
<h3>О параметрах</h3>
55
<p>У рассматриваемой функции есть несколько параметров. Первый - URL.. Это - адрес для разбора. Символы, которые воспринимаются парсером как недопустимые, будут заменяться на подчеркивание.</p>
55
<p>У рассматриваемой функции есть несколько параметров. Первый - URL.. Это - адрес для разбора. Символы, которые воспринимаются парсером как недопустимые, будут заменяться на подчеркивание.</p>
56
<p>Component - возможность считывания конкретного элемента адреса в виде строчки. Исключение - php_url_port. Этот вариант предусматривает возврат значения int.</p>
56
<p>Component - возможность считывания конкретного элемента адреса в виде строчки. Исключение - php_url_port. Этот вариант предусматривает возврат значения int.</p>
57
<h3><strong>Возвращаемые значения</strong></h3>
57
<h3><strong>Возвращаемые значения</strong></h3>
58
<p>Если URLs значительно некорректные, парсер может вернуть значение False. Когда component опускается, функция будет возвращать ассоциативный массив. В нем расположен хотя бы один элемент.</p>
58
<p>Если URLs значительно некорректные, парсер может вернуть значение False. Когда component опускается, функция будет возвращать ассоциативный массив. В нем расположен хотя бы один элемент.</p>
59
<p>В массиве ассоциативного характера (array) могут встречаться такие ключи:</p>
59
<p>В массиве ассоциативного характера (array) могут встречаться такие ключи:</p>
60
<ul><li><a>scheme</a>- пример: http;</li>
60
<ul><li><a>scheme</a>- пример: http;</li>
61
<li>port;</li>
61
<li>port;</li>
62
<li>host;</li>
62
<li>host;</li>
63
<li>pass;</li>
63
<li>pass;</li>
64
<li>user;</li>
64
<li>user;</li>
65
<li>query - после знака вопроса;</li>
65
<li>query - после знака вопроса;</li>
66
<li>fragment - после знака "решетка".</li>
66
<li>fragment - после знака "решетка".</li>
67
</ul><p>При определении component функция parse_url() вернет строчку или число вместо<a>массива</a>. Когда запрошенный элемент отсутствует в URL, "операция" возвращает значение null (пусто, ничего).</p>
67
</ul><p>При определении component функция parse_url() вернет строчку или число вместо<a>массива</a>. Когда запрошенный элемент отсутствует в URL, "операция" возвращает значение null (пусто, ничего).</p>
68
<h2>Наглядные примеры - CURL и phpQuery</h2>
68
<h2>Наглядные примеры - CURL и phpQuery</h2>
69
<p>Если нужно осуществить парсинг сайта, можно использовать для этого библиотеку CURL. Второй вариант - phpQuery, который представлен аналогом jQuery для PHP. Каждый подход имеет собственные преимущества.</p>
69
<p>Если нужно осуществить парсинг сайта, можно использовать для этого библиотеку CURL. Второй вариант - phpQuery, который представлен аналогом jQuery для PHP. Каждый подход имеет собственные преимущества.</p>
70
<h3>Предварительная подготовка</h3>
70
<h3>Предварительная подготовка</h3>
71
<p>Парсинг на сайте (ru) может быть проведен при помощи функции file_get_content. Помогает получить содержимое необходимой разработчику странички:</p>
71
<p>Парсинг на сайте (ru) может быть проведен при помощи функции file_get_content. Помогает получить содержимое необходимой разработчику странички:</p>
72
<p>В качестве параметра используется желаемый адрес. Аналогичная функция помогает добавлять заголовки через потоковый контекст:</p>
72
<p>В качестве параметра используется желаемый адрес. Аналогичная функция помогает добавлять заголовки через потоковый контекст:</p>
73
<p>Для запуска соответствующего метода опция allow_url_fopen в php.ini должна быть активирована.</p>
73
<p>Для запуска соответствующего метода опция allow_url_fopen в php.ini должна быть активирована.</p>
74
<p>Второй вариант получения содержимого - через сокеты (pfsockopen). Но лучше использовать библиотеку php CURL.</p>
74
<p>Второй вариант получения содержимого - через сокеты (pfsockopen). Но лучше использовать библиотеку php CURL.</p>
75
<h3>CURL и парсинг</h3>
75
<h3>CURL и парсинг</h3>
76
<p>Теперь настало время запуска парсинга. Первый подход - с помощью CURL. Действовать предстоит следующим образом:</p>
76
<p>Теперь настало время запуска парсинга. Первый подход - с помощью CURL. Действовать предстоит следующим образом:</p>
77
<ul><li>Сначала требуется получить http страницы без параметров.</li>
77
<ul><li>Сначала требуется получить http страницы без параметров.</li>
78
</ul><ul><li>Получение http странички с get-параметрами.</li>
78
</ul><ul><li>Получение http странички с get-параметрами.</li>
79
</ul><ul><li>Получение веб-ресурса по протоколам https.</li>
79
</ul><ul><li>Получение веб-ресурса по протоколам https.</li>
80
</ul><ul><li>Извлечение http, которая будет загружаться непосредственно через редиректы (следование 302).</li>
80
</ul><ul><li>Извлечение http, которая будет загружаться непосредственно через редиректы (следование 302).</li>
81
</ul><ul><li>Нужно сформировать POST-запрос и отправить его. Делаются подобные операции через CURL.</li>
81
</ul><ul><li>Нужно сформировать POST-запрос и отправить его. Делаются подобные операции через CURL.</li>
82
</ul><ul><li>Требуется активировать куки в запросе.</li>
82
</ul><ul><li>Требуется активировать куки в запросе.</li>
83
</ul><ul><li>В запросе GZIP активировать функцию сжатия. Требуется, когда<a>тело ответа</a>- это непонятный набор текста.</li>
83
</ul><ul><li>В запросе GZIP активировать функцию сжатия. Требуется, когда<a>тело ответа</a>- это непонятный набор текста.</li>
84
</ul><ul><li>Вывод заголовков ответов от сервера. Помогает при отладке. Пример - когда сервер не присылает правильное тело ответа или вовсе не дает его.</li>
84
</ul><ul><li>Вывод заголовков ответов от сервера. Помогает при отладке. Пример - когда сервер не присылает правильное тело ответа или вовсе не дает его.</li>
85
</ul><p>При парсинге огромную роль играют следующие параметры:</p>
85
</ul><p>При парсинге огромную роль играют следующие параметры:</p>
86
<p>Первый будет всегда в "приложении". Остальные добавляются по мере необходимости. Параметр curlopt_header отвечает за поиск проблем. С ним наладить функционирование парсера php curl не составит никакого труда.</p>
86
<p>Первый будет всегда в "приложении". Остальные добавляются по мере необходимости. Параметр curlopt_header отвечает за поиск проблем. С ним наладить функционирование парсера php curl не составит никакого труда.</p>
87
<h3>PhpQuery - принцип работы</h3>
87
<h3>PhpQuery - принцип работы</h3>
88
<p>Второй вариант применения парсинга - через phpQuery. Помогает тогда, когда страничка получена через CURL или иным методом.</p>
88
<p>Второй вариант применения парсинга - через phpQuery. Помогает тогда, когда страничка получена через CURL или иным методом.</p>
89
<p>Код выше наглядно показывает, как создать парсер на php через phpQuery. Он выступает полноценным аналогом iQuery. Все функции соответствующей "возможности" прописаны в сопутствующей документации. По<a>этой</a>ссылке можно обнаружить селекторы и методы. А<a>здесь</a>- еще несколько кодов парсеров.</p>
89
<p>Код выше наглядно показывает, как создать парсер на php через phpQuery. Он выступает полноценным аналогом iQuery. Все функции соответствующей "возможности" прописаны в сопутствующей документации. По<a>этой</a>ссылке можно обнаружить селекторы и методы. А<a>здесь</a>- еще несколько кодов парсеров.</p>
90
<p>Быстрее освоиться в parsers, а также таких понятиях как print_r, echo, curl и других помогут специализированные дистанционные курсы. В срок от пары месяцев до года удастся освоить программирование "с нуля".</p>
90
<p>Быстрее освоиться в parsers, а также таких понятиях как print_r, echo, curl и других помогут специализированные дистанционные курсы. В срок от пары месяцев до года удастся освоить программирование "с нуля".</p>
91
<a></a>
91
<a></a>