Автоматизация сбора информации из открытых интернет-источников

соответствующих методов класса DtoConverter в объекты типа WorkDto, которые затем используются в качестве источников данных для предоставления данных в графическом пользовательском интерфейсе;

3. для обеспечения связи модуля бизнес-логики и модуля, отвечающего за взаимодействие с пользователем, в класс ProcessFactory следует добавить метод, который будет отвечать за создания объектов класса WorkProcessDb и управления всей цепочки взаимодействия пользователя и базы данных.

На уровне представления основной задачей будет создание графического интерфейса пользователя и логики взаимодействия пользователя с приложением. Создание графического интерфейса в самых общих чертах сводится к разработке табличной формы, которая отображает записи, содержащиеся в таблице WORK, форм для добавление новых записей и изменения существующих, средств для удаления записей, поиска или отбора записей по заданным критериям, выгрузки данных для использования их в сторонних приложениях.

Более подробно с примером реализации учебного проекта на базе рассматриваемого шаблона разработки можно ознакомится в работе [3].

Предложенный в статье подход к разработке приложений к базам данных был апробирован в течение двух последних лет в ходе выполнения практических занятий и курсовых проектов по дисциплине «Управления данными» студентами кафедры Информационных технологий Ивановского государственного химико-технологического университета. Использование данного подхода показало, что студенты стали лучше понимать принципы разработки подобных приложений, стали выполнять больший объем работ и делать эту работу более качественно. Многие студенты используют данных подход в ходе разработки своих курсовых проектов, развивая и расширяя его возможности. Кроме того, практика знакомства студентов с предлагаемым подходом проектирования, позволяет им в дальнейшем лучше понимать и смелее использовать альтернативные подходы быстрой разработки приложений, например, такие, как Entity Framework.

Литература

1. Галиаскаров, Э.Г. Проектирование баз данных: лабораторный практикум / Э.Г. Галиаскаров, А.Ю. Крылов; Иван. гос. хим.-технол. ун-т.- Иваново, 2012. - 96 с.

2. Руководство Microsoft по проектированию архитектуры приложений. 2-е издание.

3. Разработка приложений баз данных: лабораторный практикум / Э.Г. Галиаскаров и др.; Иван. гос. хим.-технол. ун-т. - Иваново, 2015. - 112 с.

УДК 004.04

АВТОМАТИЗАЦИЯ СБОРА ИНФОРМАЦИИ ИЗ ОТКРЫТЫХ ИНТЕРНЕТ-

ИСТОЧНИКОВ

Гранаткин Денис Сергеевич, студент, Ивановский государственный химико-технологический университет, Россия, Иваново, dengranatkin94@mail.ru

Галиаскаров Эдуард Геннадьевич, к.х.н., доцент, Ивановский государственный химико-технологический университет, Россия, Иваново, portugaled@yandex.ru

Введение

Интернет может рассматриваться как незаменимый источник информации. Полученные из Сети данные применяются в сфере образования, бизнеса, развлечений, отдыха, медицины и т. д. В настоящее время, в связи с постоянным ростом информации в глобальной сети Интернет, во многих практических задачах возникает потребность сбора этой информации. Цели сбора данных у каждой практической задачи свои. Например, для большей

наглядности, оперативности и удобства пользователей может потребоваться агрегация новостных сообщений и объявлений из различных интернет-источников на одном сайте. Другим примером практической ценности подобного сбора данных может являться анализ интернет-магазинов конкурентов, на основе представленной на них информации.

Традиционные методы извлечения информации из различных интернет-источников занимают достаточно много времени. Кроме этого, собранная информация обычно представлена по-разному, вследствие чего перед началом использования полученных данных, требуется выполнять процедуры, обеспечивающие их унификацию. Ни для кого не секрет, что во время таких действий над информацией может произойти ее искажение, в то время как сохранение целостности данных, порой бывает наиболее приоритетной задачей. Для решения вышеуказанных проблем, в данной работе будет предложен один из возможных способов автоматизации сбора и преобразования информации из открытых интернет-источников.

Консолидация, трансформация и очистка

Общепринятым является разбиение задачи предварительной обработки данных на 3 этапа: консолидация, трансформация и очистка (рис.1) [1]. Наиболее сложным этапом является консолидация данных, который включает в себя сбор данных.

Рис. 1 - Обобщенная схема процесса обработки данных

Консолидация — комплекс методов и процедур, направленных на получение данных из различных источников, обеспечение требуемого уровня их информативности и качества, преобразование в единый формат, в котором они могут быть загружены в хранилище данных или аналитическую систему [2].

Консолидация данных является первым этапом реализации любой аналитической задачи или проекта. В ее основе лежит процесс сбора и организации хранения данных в виде, наиболее пригодном с точки зрения их обработки на конкретной аналитической платформе или решения конкретной аналитической задачи [2].

Трансформация - комплекс методов и алгоритмов, направленных на оптимизацию представления и форматов данных с точки зрения решаемых задач и целей анализа. Трансформация данных не ставит целью изменить информационное содержание данных. Ее задача - представить эту информацию в таком виде, чтобы она могла быть использована наиболее эффективно.

Очистка - процесс выявления и исключения различных факторов, мешающих корректному анализу данных: аномальных и фиктивных значений, пропусков, дубликатов и противоречий, шумов и т.д. [2].

Основным понятием консолидации является источник данных — объект, содержащий необходимые для решения конкретной практической задачи информацию.

Постановка задачи

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

Другими словами, в рамках этой статьи рассматривается задача консолидации данных. Для большей наглядности, опишем постановку реальной практической задачи, которая была решена в процессе написания работы.

Требуется:

1. Агрегировать многочисленные статьи по психологии из различных Интернет-ресурсов на одном сайте;

2. При сборе статей весь медиа-контент должен быть валидно перенесен с сайтов-источников на наш сайт;

3. Сбор данных должен происходить в автоматическом режиме и запускаться с помощью cron-задачи раз в сутки.

Каждый пост (статья) должен содержать такие атрибуты, как:

1. Заголовок (наименование) статьи;

2. Описание статьи;

3. Превью (если имеется на сайте-источнике) - изображение для статьи, которое будет отображено в списках постов на нашем сайте;

4. Текст статьи;

5. Рубрика, к которой принадлежит пост;

6. Ссылка на первоисточник статьи.

Решение

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

Следующим шагом было распределение всего собираемого контента по семантической сети - соответствующим рубрикам нашего сайта, которые формировались на основе анализа имеющихся рубрик на сайтах-донорах. Данная задача выполнялась вручную по следующему алгоритму:

1. Формирование совокупного списка рубрик со всех сайтов-источников;

2. Выявление похожих рубрик из совокупного списка;

3. Слияние похожих рубрик - тем самым получение списка рубрик нашего сайта;

4. Закрепление ссылок на каждую из рубрик сайтов-источников за соответствующей рубрикой нашего сайта.

Теперь рассмотрим тему, непосредственно связанную с автоматизацией сбора статей с сайтов-доноров.

Все данные, представленные в глобальной сети Интернет, являются неструктурированными ввиду индивидуальности и специфичности архитектуры каждого web-сайта. Всемирная паутина соткана из миллионов web-страниц, большая часть которых создана при помощи языка разметки гипертекста (HTML).

Проект World Wide Web (WWW) объединяет разбросанную по всему миру информацию. Для решения такой задачи WWW использует Internet HyperText Transfer Protocol (HTTP) - Протокол Передачи Гипертекста, который позволяет ввести соглашения на способы представления данных при взаимодействии клиента и сервера.

Данные передаются в теле сообщения в соответствии с MIME стандартом. HTML должен соответствовать одному из MIME-типов, а именно text/html. Кроме этого, HTML является разработкой, соответствующей Международному Стандарту ISO 8879 - Standard Generalized Markup Language (SGML). Этот стандарт, в свою очередь, представляет собой систему для определения структурированных типов документов.

HTML документ очень похож на обычный текстовый файл, за исключением того, что некоторые символы (строки) в нем являются управляющими. Эти символы называются тэгами и определяют структуру документа [3]. Именно из таких документов и происходит автоматический сбор информации в Интернете.

Задача извлечения информации из Интернет-ресурсов была бы гораздо проще, если бы существовал единый стандарт построения web-сайтов. Но, к сожалению, такие стандарты отсутствуют - все многообразие сайтов и web-страниц объясняется фантазией веб-дизайнеров, верстальщиков и разработчиков. Пожалуй, единственное, что их объединяет, это язык HTML, который определяет внешний вид Интернет-ресурсов, но не описывает его содержание.

Существует не мало систем для выполнения задач извлечения данных из Интернет-источников [4]. Представим некоторые из них: TSIMMIS, WebOQL, FlORID, XWRAP, RoadRunner, Lixto, RAPIER, SRV, WHISK. В основном, все эти системы узко специализированы под конкретные задачи: одни направлены на работу с относительно грамматически связными текстами, другие привязаны к определенной однотипной структуре данных и, поэтому, использование подобных инструментов не является уместным для решения поставленной задачи.

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

На данном этапе поставленная задача свелась к созданию программы-сборщика данных (поискового робота).

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

Для решения нашей задачи, было принято решение создать веб-краулер, один цикл работы которого описывается следующим алгоритмом:

1. Переход на страницу-рубрику сайта-источника (все подобные страницы были определены при формировании списка рубрик нашего сайта);

2. Фильтрация элементов текущей страницы;

3. Получение ссылок со страницы;

4. Обход полученных ссылок, анализ и извлечение нужной нам информации.

В ходе анализа сайтов-источников, были выявлены страницы, где содержатся ссылки на все статьи, имеющиеся на ресурсе. Более того, ссылки на эти страницы содержались в списках постов конкретных рубрик. Не трудно догадаться, что при переходе краулером по такой ссылке, может произойти некорректное распределение статей по рубрикам нашего сайта. Данная проблема была решена введением «черного списка», где содержатся ссылки, по которым поисковому роботу запрещено следовать.

Так как краулер извлекает требуемые атрибуты из HTML - разметки сайта-источника, то ему должно быть заранее известно, на какие элементы web-страницы ориентироваться. Другими словами, мы должны определить ряд атрибутов сайта-донора, с помощью которых поисковой робот будет извлекать требуемую информацию. В нашем случае такими атрибутами являются:

1. Атрибут, который определяет блок страницы-рубрики, в котором расположены ссылки на статьи;

2. Атрибут, определяющий наличие статьи на странице - так как списки со ссылками на статьи представлены с использованием пагинации, поисковому роботу нужно «знать»,

как можно отличить страницу с нужной нам информацией, от очередной страницы в пагинации;

3. Атрибут, определяющий блок в котором расположена статья - чтобы краулеру не «забрать» лишнего со страницы, ему явно следует указать, из какого элемента HTML - разметки извлекать информацию;

4. Атрибут, определяющий заголовок статьи;

5. Атрибут, определяющий описание статьи;

6. Атрибут, определяющий элементы на web-странице, которые нужно отфильтровать.

В качестве превью статьи было решено использовать первое изображение, которое попадется поисковому роботу при анализе текущего поста.

Недостатки решения

Данный метод сильно зависит от характеристик сервера - иногда встречаются сервера, у которых стоят ограничение на количество подключений с одного адреса. В этом случае, стоит договориться с владельцами сайтов-источников о снятии ограничений для определенного адреса. Другим решением этой проблемы может являться попытка каким-то образом «замаскировать» поискового робота (использование прокси).

Предложенное решение рассчитано на «грамотную» верстку. В сети Интернет иногда встречаются страницы, у которых HTML-разметка оставляет желать лучшего. Это приводит к невозможности выделить атрибуты, на которые поисковой робот должен ориентироваться в своей работе.

Еще одним недостатком можно выделить то, что при задании параметров работы краулера, от пользователя требуется наличие знаний структуры HTML-документа. Задание атрибутов для разработанного поискового робота основывается на CSS-селекторах, поэтому владение ими также крайне необходимо.

Выводы и результаты

Как уже было сказано, с помощью предложенного метода было собрано более 16 тысяч статей по психологии в рамках одного web-сайта. Главным преимуществом данного подхода является то, что все число этих постов было извлечено в течение суток периодического запуска работы краулера. Даже не стоит говорить о том, сколько времени потребовалось бы человеку на выполнение данной задачи. В настоящее время поисковой робот запускается автоматически один раз в сутки для выявления и сбора новых статей с сайтов-источников.

Если говорить в целом, то в ходе данной работы:

1. Был изучен один из возможных методов автоматического сбора информации в сети Интернет;

2. В рамках решения практической задачи была написана библиотека для автоматического сбора информации, соответствующей критериям, описанным в разделе «Постановка задачи». Данная библиотека может быть использована практически на любом web-сайте.

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

Рис. 2 - Форма для тестирования сайта-источника

№ 1 Все психологи счастливы. Или нет?

Источник: http://www.psyel10logies.ru/self-knowledge/smysl-zhizni/vse-psiholo9i-schastlivyi-ili-11et/

№ 2 Мы не можем быть счастливы все время... и это прекрасно!

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/myi-ne-mojem-byil-schastlivyi-vse-vremya-i-eto-prekrasno/

№ 3 6 фильмов о женском призвании

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/6-filmov-o-prizvaiii/

№ 4 Никогда не сдавайтесь! Цитаты для тех, у кого опустились руки

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/nikogda-ne-sdavaytes-tsitatyi-dlya-teh-u-kogo-opustilis-ruki/

№ 5 6 вещей, которые вы не должны менять в себе ради партнера

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/6-veschey-kotoryie-vyi-ne-doljnyi-menyat-v-sebe-radi-partnera/

№ 6 Дерк Перебум: «Мы добьемся большего, если перестанем наказывать

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/derk-perebiim-myi-dobemsya-bolshego-esli-perestanem-nakazyiva1-

№ 7 Как стать лидером: 10 правил от Ирины Хакамады

Источник: http://www.psycholcgies.ru/self-knowledge/smysl-zhizni/kak-stat-liderom 10-рга7Н-о1¡ппуьЬакап^а/

№ 8 Жизнь после смерти: свидетельства души или мозговые нарушения?

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/jizn роэ1е Бтег1! ^иэЬ! ¡И тогдо¥у1е пагиБЬеп1уа/

№ 9 Лама Йонге Мингьюр Ринпоче: «Счастье живет в каждом из нас»

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/lama уопде-т1пдуиг-пгросЬе-зсЬаз1е-)^е1^-ка]Ьогшг-паз/ МО 1П »Итоги/мм слопарт«1 нлпапм 7П4- п голму лпгпытиау гэпмгшмм м пмылпо Рис. 3 - Список полученных в ходе тестирования сайта-источника статей по психологии

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

4).

№ 1 Все психологи счастливы. Или нет?

Источник: http://www.psychologies.ru/self-knowledge/smysl-zhizni/vse-psihologi-schastlivyi-ili-net/

Описание: Их приглашают на телевизионные ток-шоу, их лекции собирают полные залы, их книги становятся бестселлерами. Согласно

многим опросам, психологи и психотерапевты в среднем счастливее, чем представители других профессий. Но могут ли они стать

примером для подражания? Их знания, практика, умение проникнуть в тайны психики - делает ли все это их счастливее? Нет ничего

более спорного.

Текст статьи:

текст: Игорь Эбаноидзе, Ольга Сульчинская

Выступая на публике или работая с клиентами, они говорят с нами о самом личном. Мы часто смотрим на них как на особенных людей, обладающих рецептом счастья. Но в самом ли деле они счастливее нас?

Их приглашают на телевизионные ток-шоу, их лекции собирают полные залы, их книги становятся бестселлерами. Согласно многим опросам, психологи и психотерапевты в среднем счастливее, чем представители других профессий. Но могут ли они стать примером для подражания? Их знания, практика, умение проникнуть в тайны психики - делает ли все это их счастливее? Нет ничего более спорного.

В среде психологов любят рассказывать истории из жизни, которые скорее свидетельствуют об обратном: один великий психоаналитик упрекает себя в том, что не смог предотвратить самоубийство своей жены; другой терапевт, холостяк, страдает от того, что все его любовные истории заканчиваются скандалами; у детского психиатра никогда не было детей... Вспомним и об отце психоанализа Зигмунде Фрейде, чей юмор скрывал склонность к депрессиям. Подтверждают ли психологи поговорку о сапожнике без сапог? И какие качества обретают благодаря профессии?

Более уязвимые

История показывает, что путь в психотерапию часто начинается с глубокой душевной раны, которую будущие специалисты пытаются излечить, изжить, изучая и на себе проверяя практикуемый ими метод. Можно сказать наверняка, что многие психологи начали заниматься именно этой наукой, патомучтостоалают или стоалали сами. Рис. 4 - Отдельно взятая статья по психологии, полученная в ходе тестирования сайта источника

В настоящее время ведутся работы по модификации данной библиотеки. Основная задача заключается в предоставлении возможности указать любой список атрибутов для извлечения из постов сайтов-доноров.

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

Литература

1. Паклин Н.Б., Орешков В.И. Бизнес-аналитика: от данных к знаниям // СПб.: Питер, 2009 - 624 с.

2. Корпоративный менеджмент. Консолидация данных — ключевые понятия // Корпоративный менеджмент. 2016. URL: http : //www .cfin.ru/itm/olap/cons .shtml (дата обращения: 20.11.2016).

3. Городской кот. Краткая информация о HTML // Городской кот. 201б. URL: http : //www .citycat.ru/doc/HTML/short/html .html (дата обращения: 23.11.2016).

4. A.H.F. Laender, B. A. Ribeiro-Neto, Juliana S.Teixeria. A brief survey of web data extraction tools // ACM SIGMOD Record 31(2), pp 84-93. 2002