ООП   PHP   web   4GL - визуальные среды

Практика пограммирования скриптов на PHP

Парсинг web-страниц

Парсингом (от англ. parse - разбор) называют процесс анализа или разбора определенного контента на составляющие с помощью роботов-парсеров (специальных программ или скриптов). Самые известные парсеры в сети — это поисковые роботы, которые анализируют страницы, сохраняют данные анализа у себя в базе и потом при поиске выдают релевантные и актуальные документы. Парсинг сайтов – последовательный синтаксический анализ информации, размещённой на интернет-страницах. Что представляет из себя текст интернет-страниц? Иерархичный набор данных, структурированный с помощью человеческих и компьютерных языков. На человеческом языке предоставлена информация, знания, ради которых, собственно, люди и пользуются Интернетом. Компьютерные языки (html, JavaScript, css) определяют, как информация выглядит на мониторе. Web-парсинг используется для автоматизированного сбора контента или данных с какого-либо сайта или сервиса. Как правило, парсинг производится с применением одного из скриптовых, серверных языков программирования: PHP, Perl и других. Результат парсинга чаще всего складывается в базу данных, в файл, в удобном для чтения или обработки формате, чаще всего в XML. Часто парсинг путают с граббингом. Это близкие понятия, но все же имеют разные значения. Граббер позволяет скачивать информацию из сети (html-страницы, rss-ленты, xml-документы) в свою базу, а парсер позволяет выявить из этой кучи полезную информацию и обработать её, в зависимости от поставленных задач.

Парсинг с использованием регулярных выражений

Регулярное выражение (regular expression, regexp, регэксп) - механизм, позволяющий задать шаблон для строки и осуществить поиск данных, соответствующих этому шаблону в заданном тексте. Кроме того, дополнительные функции по работе с regexp'ами позволяют получить найденные данные в виде массива строк, произвести замену в тексте по шаблону, разбиение строки по шаблону и т. п. Однако главной их функцией, на которой основаны все остальные, является именно функция поиска в тексте данных, соответствующих шаблону, описанному в синтаксисе регулярных выражений.

Где используются регулярные выражения? Сейчас регулярные выражения используются многими текстовыми редакторами и утилитами для поиска и изменения текста на основе выбранных правил. Многие языки программирования уже поддерживают регулярные выражения для работы со строками. Например, Perl и Tcl имеют встроенный в их синтаксис механизм обработки регулярных выражений. Набор утилит (включая редактор sed и фильтр grep), поставляемых в дистрибутивах Unix, одним из первых способствовал популяризации понятия регулярных выражений. Регулярные выражения можно использовать при парсинге сайтов, особенно, если нужно извлечь и проанализировать конкретную информацию статической HTML страницы. Такой страницей может служить какой-либо отчёт, размер которого превышает 10Мб.

Парсинг с использованием библиотеки Python BeautifulSoup и ей подобных

Этот вид парсинга основан на построении полного дерева синтаксического разбора (DOM) в оперативной памяти и удобной навигации по нему с помощью встроенных в библиотеку функций. Так как на построение полного дерева уходит достаточно большой объем оперативной памяти и ресурсов компьютера, то в сравнении с предыдущим методом требует больше ресурсов, но позволяет более точно задать критерии поиска необходимой информации, а также предоставляет удобный интерфейс для программиста.

Парсинг с использованием движка Webkit на языке Javascript

Парсинг с помощью движка Webkit также включает в себя и предыдущий вид парсинга, т.е. построения полного дерева DOM в оперативной памяти. Типичным представителем данного вида парсинга является PhantomJS. Фактически, это полноценный браузер в консоли, позволяющий с помощью встроенного языка Javascript взаимодействовать с Web-страницами, а также с ее интерактивными элементами, отслеживать данные, загружаемые на вебстраницу с помощью технологии AJAX, а также контролировать выполнение скриптов. Это снимает практически все ограничения по получению информации с сайта для систем автоматизации.

Сравнение инструментов парсинга

Максимальные возможности для парсинга раскрывает PhantomJS. Каждый инструмент имеет свои преимущества и недостатки. Можно порекомендовать использовать регулярные выражения для извлечения простой структурированной информации, размещённой на HTML страницах, а также там, где важна производительность и минимальное потребление ресурсов компьютера. Наиболее удобным способом парсинга, где не требуется интерактивность в получении информации с Web-страниц, где не используется Javascript и AJAX, является использование библиотек типа BeautifulSoup для различных языков программирования. И там, где для получения данных с web-сайта требуется взаимодействие с интерактивными элементами web-страниц, свои возможности раскрывает PhantomJS.

Пример скрипта PhantomJS

 
var page = require("webpage").create();
page.onConsoleMessage = function(msg) {
    	console.log(msg);
};
page.open("proba.html", function() {
    	page.evaluate(function() {
            	var list = document.querySelectorAll('span.field-content');
            	for (var i = 0; i < list.length; ++i) {
                    	console.log((i + 1) + ": " + list[i].innerText);
            	}                                          	 
    	});
    	phantom.exit();
});



Пример скрипта Perl regexp

#!/usr/bin/perl
open (MYFILE, 'proba.html');
$sidebar = 0;
while () {
    	chomp;
    	if (m/.*field-content.*]*>([^<]*)<.*/) {print $1."\n"}
}


Пример скрипта BeautifulSoup

#!/usr/bin/python
# -*- coding: utf-8 -*-
from BeautifulSoup import BeautifulSoup as soup
url = soup(open('proba.html'))
for i in (url.findAll(attrs={'class':'field-content'})):
            	print i.text

Источники и ссылки

  1. Быстрое копирование информации с web-страницы (Парсинг PHP)
  2. Парсинг XML с помощью
  3. PHP скрипта
  4. Функции парсинга веб страниц
  5. Проект и исходники парсера web-страниц на PHP5
  6. PHP-скрипт парсинга web-страницы
  7. http://ponka.vnukov.ru - преподавательский сайт
ООП   PHP   web   4GL - визуальные среды

Знаете ли Вы, что такое "Большой Взрыв"?
Согласно рупору релятивистской идеологии Википедии "Большой взрыв (англ. Big Bang) - это космологическая модель, описывающая раннее развитие Вселенной, а именно - начало расширения Вселенной, перед которым Вселенная находилась в сингулярном состоянии. Обычно сейчас автоматически сочетают теорию Большого взрыва и модель горячей Вселенной, но эти концепции независимы и исторически существовало также представление о холодной начальной Вселенной вблизи Большого взрыва. Именно сочетание теории Большого взрыва с теорией горячей Вселенной, подкрепляемое существованием реликтового излучения..."
В этой тираде количество нонсенсов (бессмыслиц) больше, чем количество предложений, иначе просто трудно запутать сознание обывателя до такой степени, чтобы он поверил в эту ахинею.
На самом деле взорваться что-либо может только в уже имеющемся пространстве.
Без этого никакого взрыва в принципе быть не может, так как "взрыв" - понятие, применимое только внутри уже имеющегося пространства. А раз так, то есть, если пространство вселенной уже было до БВ, то БВ не может быть началом Вселенной в принципе. Это во-первых.
Во-вторых, Вселенная - это не обычный конечный объект с границами, это сама бесконечность во времени и пространстве. У нее нет начала и конца, а также пространственных границ уже по ее определению: она есть всё (потому и называется Вселенной).
В третьих, фраза "представление о холодной начальной Вселенной вблизи Большого взрыва" тоже есть сплошной нонсенс.
Что могло быть "вблизи Большого взрыва", если самой Вселенной там еще не было? Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 20.09.2019 - 04:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
18.09.2019 - 12:08: НОВЫЕ ТЕХНОЛОГИИ - New Technologies -> ПРОБЛЕМА ИСКУССТВЕННОГО ИНТЕЛЛЕКТА - Карим_Хайдаров.
18.09.2019 - 06:01: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Л.Г. Ивашова - Карим_Хайдаров.
17.09.2019 - 05:51: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> ФАЛЬСИФИКАЦИЯ ИСТОРИИ - Карим_Хайдаров.
17.09.2019 - 05:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Тиртхи - Карим_Хайдаров.
16.09.2019 - 18:21: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
16.09.2019 - 03:11: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
14.09.2019 - 18:23: ПЕРСОНАЛИИ - Personalias -> WHO IS WHO - КТО ЕСТЬ КТО - Карим_Хайдаров.
13.09.2019 - 09:08: ЭКОЛОГИЯ - Ecology -> Биологическая безопасность населения - Карим_Хайдаров.
12.09.2019 - 17:47: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
08.09.2019 - 03:42: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от О.Н. Четвериковой - Карим_Хайдаров.
07.09.2019 - 07:36: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution