Парсер, что это: идея и движение
Интернет сделал информацию доступной, но чтобы выбрать из нее нужное, по-прежнему приходится прикладывать серьезные усилия и терять значительное время. Языки гипертекста формализовали представление информации, но задача парсинга (распознавания) от этого не упростилась, а в некоторых сферах даже усложнилась. Множество форматов представления, языков, стилей оформления, вариантов доступа, способов разметки данных должен «знать и уметь» парсер: что «это именно то, необходимое».
Человек видит и слышит прежде всего сквозь призму собственных знаний и опыта, а формализовав это в форме алгоритма, получает статичный механизм и убеждается, что до идеального решения еще достаточно далеко.
Палитра инструментов для парсинга
Парсер - определение задачи: найти нужную информацию из выдачи поисковой системы, контента сайта, документов, электронных таблиц, файлов других форматов. Более формально: определить и сформировать поток информации, применить к нему набор ключевых слов по определенным правилам с конкретной целью.
Алгоритмы традиционно делятся на синтаксические и семантические, включающие определенное количество языков. Инструмент для парсинга может быть программой, сайтом, плагином. Вариантов реализации предлагается много, у каждого свои достоинства и недостатки. В частности, парсер контента X-Parser работает по списку ключевых слов. Результат: дает чистый текст, списки сниплетов, ссылок, URL, ... Предлагается развитая система фильтров, настройка языков и форматирования полученного результата.
Программа DataCol ориентирована на сбор информации для наполнения сайта контентом. Например, для создания сайта конкретной тематики (рестораны, магазины, туроператор, ...) всегда необходима общая информация, которую в целях экономии времени можно быстро найти в Интернете, чем сканировать или набирать вручную.
Mailagent Parser ориентирован на сбор адресов электронной почты; SlimerJs позволяет быстро анализировать сложные динамические сайты. Система управления сайтами WordPress предлагает собственный модуль для парсинга, которым можно настроить, например, постоянно автоматически обновляемую ленту новостей.
Инструментов много, но количество работ по формированию, разборке и форматированию информационных потоков стабильно увеличивается.
Использование доступных средств напоминает больше процесс понимания необходимого механизма конкретного парсинга для конкретной задачи, нежели попытки пристроить что-то уже существующее к своему ресурсу.
Основные сферы парсинга
Обычно массовый заказчик утверждает про парсер, что это фильтр, и уверенно настаивает на этом. Действительно, чтобы исполнить желание посетителя, поисковый сайт выполняет анализ множества информационных источников, хотя чаще всего он роется в собственных базах данных, тем не менее пополняя их систематически. Любой приличный сайт также предлагает поиск по своему содержимому, своей информации, родственным сайтам. Это тоже имеет отношение к теме "что такое парсер", но истинное содержание задачи лежит в другой плоскости.
Надо отдать должное языкам гипертекста: их многочисленные, но строгие теги и способы оформления данных позволяют жестко формализовать то, что должен распознать браузер, а это уже есть парсинг. Многие инструменты для поиска информации используют именно браузерные варианты (движки). Регулярные выражения также являются эффективным способом поиска нужной информации. Реализация jQuery - особая форма парсинга документа, лежащая в нем самом и формирующая его часть или управляющая им.
Что такое парсер? Это и PHP, и браузер, и встроенный в нем JavaScript. Эти средства выполняют свою, в большей части синтаксическую функцию. А вот что реально и существенно: парсер - значение, которое определяет область применения и цель.
Говоря о туристическом бюро, можно поставить задачу разработать парсер мест отдыха, обеспечить обновление информации о условиях проживания, погоде, ценах на продукты питания, режимах работы музеев. Разрабатывая новостной сайт, следует написать то, что будет анализировать определенный набор сайтов и собирать с них свежую информацию.
Структура и содержание процесса
Прежде чем сделать осмысленный ответ на вопрос «парсер: что это?», нужно сформировать поток информации и определить набор ключевых слов. Алгоритм анализа поисковой выдачи, несмотря на кажущуюся формальность, имеет на входе различные элементы, в которых искомые слова и их последовательности могут выходить за пределы желаемой семантики.
Даже престижные поисковики, выполняя пользовательский запрос, часто предлагают вовсе не то, что требуется по смыслу, кроме того, по собственному разумению снабжают все, что предлагают, значительным объемом рекламы и спама.
Утверждать про парсер, что это эквивалент искусственного интеллекта (поскольку приходится иметь дело с построением алгоритмов должных адаптироваться к изменяющимся информационным потокам, мобильным правилам формирования и использования ключевых слов), очень рано.
Львиная доля «парсинга», который автоматически и неосознанно делает человек каждую секунду очень проста, логика этого процесса может быть достаточно легко формализована, отчасти существующие инструменты это демонстрируют.
От статики к динамике
Также можно сказать про парсер, что это совокупность алгоритма формирования потока информации, правил определения ключевых слов и их применения. Но эти три основания зыбки как песок, а в конкретном применении и их можно интерпретировать по-разному.
Банальный поиск через "Гугл" и его вариант парсинга по слову «ключ» с вероятностью 0% найдет хотя бы одну статью про родник, который мирно журчит где-то в чудесном месте. Вероятность не повысится, даже если уточнить «ключ на поляне». "Гугл" добросовестно выдаст:
- Ключ на старт!
- Места отдыха на природе - Официальный сайт администрации ...
- Горячий Ключ, официальный сайт "Горячий ключ", форум "Горячий ключ"... На поляне Достопримечательности Таганай - Национальный парк Таганай
- Гостевой дом на Красной Поляне, снять дом (коттедж) на Новый ...
- "Небесный ключ" - Результат из Google Книги
...
Естественно алгоритм парсинга должен оптимизировать эту выдачу и выдать информацию о ключе как о роднике, какие они бывают, где встречаются, чем интересы и полезны. Очевидно, что даже самый развитый парсинг из выдачи "Гугла" здесь ничего не даст.
Активные знания
Чтобы проблема была решена надлежащим образом необходимо парсить не выдачу поисковых систем, а контент множества сайтов и содержание неопределенного количества статей. Как из слова «ключ» получить содержательный поток информации?
Вариант может быть только один: нужно сделать ключевые слова активными, то есть поиск по конкретному слову должен расширяться по его смыслу. Правило поиска должно быть активным, то есть, изначально заданное, что-то само по себе превращается в предварительное уточнение смысла, и тогда начинается движение как в части формирования надлежащего источника информации (анализируемого потока), так и в отношении того, что в нем парсится.
Активное знание - что-то из области Человек>Интеллект>Программирование, некая ЧИПиотика получается. Это не просто правило, не просто ключевое слово. Человек обрел интеллект и формализовал его посредством программирования не статично, а динамично, придав парсингу новое значение - изменяемость на входе и мобильность в процессе.
Обозначенная концепция предполагает элемент саморазвития - это сложно, но если популярные поисковые системы «научились» анализировать поисковые запросы и начали в каждый браузер отправлять адекватную рекламу, вполне возможно этот успех направить в более целесообразное русло.
Идеальное решение: собственные знания и опыт > призма правильных правил
Парсинг стал серьезной осязаемой задачей и сформировал конкретный опыт формирования информационных потоков, правила применения ключевых слов. Распознавание символов, сканированных изображений и почти «совершенные» переводы с одного языка на другой на фоне развития интерфейсов взаимодействия (API сайтов, поисковых систем, парсеров) позволяют определить правильное направление движения.
Как все будет реализовано, сказать еще трудно, но абсолютно верно, что правила формирования потоков информации, структура ключевых слов и развитие инструмента должно быть активным, причем эта составляющая ввиду общей статичности и формальности современных языков программирования должна определяться в процессе использования.
Этот тот случай, когда естественный человеческий фактор в процессе решения насущных задач, может и будет способствовать обучению и развитию сферы парсинга, формированию призмы определенных правил.