ООП   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 - визуальные среды

Знаете ли Вы, в чем ложность понятия "физический вакуум"?

Физический вакуум - понятие релятивистской квантовой физики, под ним там понимают низшее (основное) энергетическое состояние квантованного поля, обладающее нулевыми импульсом, моментом импульса и другими квантовыми числами. Физическим вакуумом релятивистские теоретики называют полностью лишённое вещества пространство, заполненное неизмеряемым, а значит, лишь воображаемым полем. Такое состояние по мнению релятивистов не является абсолютной пустотой, но пространством, заполненным некими фантомными (виртуальными) частицами. Релятивистская квантовая теория поля утверждает, что, в согласии с принципом неопределённости Гейзенберга, в физическом вакууме постоянно рождаются и исчезают виртуальные, то есть кажущиеся (кому кажущиеся?), частицы: происходят так называемые нулевые колебания полей. Виртуальные частицы физического вакуума, а следовательно, он сам, по определению не имеют системы отсчета, так как в противном случае нарушался бы принцип относительности Эйнштейна, на котором основывается теория относительности (то есть стала бы возможной абсолютная система измерения с отсчетом от частиц физического вакуума, что в свою очередь однозначно опровергло бы принцип относительности, на котором постороена СТО). Таким образом, физический вакуум и его частицы не есть элементы физического мира, но лишь элементы теории относительности, которые существуют не в реальном мире, но лишь в релятивистских формулах, нарушая при этом принцип причинности (возникают и исчезают беспричинно), принцип объективности (виртуальные частицы можно считать в зависимсоти от желания теоретика либо существующими, либо не существующими), принцип фактической измеримости (не наблюдаемы, не имеют своей ИСО).

Когда тот или иной физик использует понятие "физический вакуум", он либо не понимает абсурдности этого термина, либо лукавит, являясь скрытым или явным приверженцем релятивистской идеологии.

Понять абсурдность этого понятия легче всего обратившись к истокам его возникновения. Рождено оно было Полем Дираком в 1930-х, когда стало ясно, что отрицание эфира в чистом виде, как это делал великий математик, но посредственный физик Анри Пуанкаре, уже нельзя. Слишком много фактов противоречит этому.

Для защиты релятивизма Поль Дирак ввел афизическое и алогичное понятие отрицательной энергии, а затем и существование "моря" двух компенсирующих друг друга энергий в вакууме - положительной и отрицательной, а также "моря" компенсирующих друг друга частиц - виртуальных (то есть кажущихся) электронов и позитронов в вакууме.

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

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 15.11.2019 - 09:04: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
15.11.2019 - 06:48: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
15.11.2019 - 06:45: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
14.11.2019 - 12:35: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.11.2019 - 19:20: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
12.11.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Бориса Сергеевича Миронова - Карим_Хайдаров.
12.11.2019 - 11:49: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Веры Лесиной - Карим_Хайдаров.
11.11.2019 - 00:24: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
08.11.2019 - 06:42: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
05.11.2019 - 21:56: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Декларация Академической Свободы - Карим_Хайдаров.
04.11.2019 - 12:41: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> КОМПЬЮТЕРНО-СЕТЕВАЯ БЕЗОПАСНОСТЬ ДЛЯ ВСЕХ - Карим_Хайдаров.
Bourabai Research Institution home page

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