Файл: Средства разработки клиентских программ (Обоснование выбора языка программирования и инструментальных средств для создания макетов и рабочей версии программного продукта).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 19.06.2023

Просмотров: 30

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

ВВЕДЕНИЕ

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

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

Однако, при поисках статей нужного автора и тематики уходит большее количество сил и времени. В настоящее время одной из главных тенденций в этой сфере является автоматизация данного процесса. Каждый раз при сборе данных для исследовательской работы люди тратят значительное количество сил и времени для поиска печатных статей в библиотеках. Но почти вся информация сейчас переведена в электронный вид и поиск работ определенного автора и по заданной тематике с использованием уже созданного классификатора УДК затруднен. В России над данной проблемой работает, например, научно-информационный и аналитический центр ВИНИТИ РАН, создавший первоначально в 2010 году Реферативный журнал (РЖ) со статьями в бумажном виде. С наступлением компьютеризации общества данный формат РЖ был переорганизован в единый электронный реестр [1]. Так как в настоящее время не существует индексации веб-страниц по каким-либо классификаторам и аналогам на популярных площадках с большим объемом статей, в ВИНИТИ РАН было решено создать реферативную базу данных с полным объемом публикаций на русском языке с удобной иерархической структурой. Однако, пополнение данного реестра в ручном режиме достаточно трудоемкий процесс, требующий большого количества человеческих ресурсов. Одним из возможных способов для решения этой проблемы является создание универсального веб-краулера для автоматизации процесса поиска и загрузки интересующих статей.

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


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

Для достижения поставленной цели необходимо решить следующие задачи:

  1. Выбрать и изучить подходящую библиотеку краулера с открытым исходным кодом для сканирования и сбора данных с веб-страниц.
  2. Выбрать формат полученных данных.
  3. Изучить наиболее популярные структуры веб-сайтов издательств.
  4. Разработать для каждого изученного сайта веб-краулер.
  5. Установить подобие в разработанных системах.
  6. Создать универсальную систему для загрузки статей с сайтов издательств, имеющих различные структуры сайта.

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

ГЛАВА 1 Теоретические аспекты разработки клиентских программ

1.1 Анализ существующих технических решений

Большинство имеющихся в сети Интернет проектов по данному направлению представляют собой системы скачивания всей html-страницы с тегами, рекламой и другими ненужными данными. Один из таких проектов [2] под названием Teleport Pro представляет собой приложение для скачивания полностью страницы или отдельных масок, например, все картинки на странице, что является некорректным решением поставленной задачи из-за большого количества лишних данных.

Также существует большое количество работ в сети Интернет данного направления, которые являются разработанными под конкретные типы сайтов веб-краулеры на базе различных фреймворков. Рассмотрим наиболее популярные краулеры с открытым исходным кодом, описанных на блог-ресурсе Top 50 open source web crawlers [3].

  1. Scrapy [4] (кросплатформенный, параллельный, сфокусированный) – это расширяемый и гибкий краулер, написанный на я зыке программирования Python, который легко устанавливается, поддерживает выгрузку данных в JSON, CSV, XML. Устойчивый и активно развивающийся, производительный, позволяющий держать множество соединений за раз.
  2. Open Search Server [5] (инкрементный, параллельный, кросплатформенный) – это краулер и поисковой движок, ядро которого написано на Java, поддерживающий современные подходы к полнотекстовому поиску, в частности поддерживает геолокацию. Кроме того, поддерживает 18 языков. Это надежный и производительный инструмент. Поддерживается платный облачный сервис с сконфигурированной инфраструктурой.
  3. Crawlerj [6] (параллельный, кросплатформенный) – это краулер, написанный на java, c простым API. Не поддерживает индексирования. Может порождать излишнюю нагрузку на исследуемый хост.

На данный момент нет существующих открытых систем для автоматизации процесса скачивания статей для сайтов с любой структурой веб-страниц. Большинство работ в сети Интернет данного направления являются разработанные под конкретные типы сайтов веб-краулеры на базе различных фреймворков. Одна из таких работ [7] представляет собой веб-граббер, для различных сайтов Бразилии. Работа данного граббера ориентирована только на индексированные сайты, что не подходит для пользователей, взаимодействующих с бесструктурными сайтами, а также в нем отсутствует поддержка русского языка. Другая работа [8] под названием Deep Web Crawler использует несколько баз данных, что приводит большим затратам средств и времени на дополнительные запросы к серверу хранения загруженной информации. Исходя из анализа существующих решений, следует вывод, что нужно создать систему, поддерживающую быстрый доступ к собранным данным и обладающей возможностью работы с веб-сайтами любой структуры страниц, а также с русскоязычным интуитивным графическим интерфейсом для использования универсального краулера неопытными пользователями.

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

1.2 Обоснование выбора языка программирования и инструментальных средств для создания макетов и рабочей версии программного продукта

Для разработки универсального веб-краулера была выбрана открытая фреймворк сбора данных Scrapy.

Scrapy – это бесплатная и открытая веб-платформа для сканирования и сбора информации в Интернете. В настоящее время он поддерживается компанией Scrapinghub Ltd., которая специализируется на разработке и обслуживании сетей. Архитектура проектов Scrapy построена вокруг «пауков», которые являются автономными сканерами, которым предоставляется набор инструкций. Некоторые известные компании и продукты, использующие Scrapy: Lyst, CareerBuilder, Parse.ly, Sayone Technologies, Science Po Medialab.


Scrapy создана в лондонской компании агрегирования сети и электронной коммерции Mydeco, где он был разработан и поддерживается сотрудниками Mydeco и Insophia (веб-консалтинговой компании, базирующейся в Монтевидео, Уругвай). Первый публичный релиз был в августе 2008 года под лицензией BSD с выпуском версии 1.0 в июне 2015 года. В 2011 году Scrapinghub стал новым официальным владельцем данного фреймворка [9].

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

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

Метод локального хранения подразумевает под собой обработку собранных данных, преобразование и вывод их в файлы, созданные на запустившем разработанную систему устройстве. Для упрощенной работы с данными, в частности, в ВИНИТИ РАН используется формат хранения данных ISO-2709 с особенностями принятыми в ИПС CDS-ISIS [10]. Файлы в данном формате являются текстовыми. Содержимое файла состоит из трех составляющих:

  • Leader segment;
  • Directory segment;
  • Data Fields segment.

Leader segment и Directory segment состоят из цифровых символов фиксированной длины, описывающих параметры доступа к элементам в третьем сегменте. Каждая запись заканчивается специальным символом. Так как хранить в файле строки с большой длиной символов нецелесообразно, они ограничены размером в 80 символов и заканчиваются так же определенным символом. В Data Fields segment хранятся соответственно уже собранные и обработанные данные. Пример содержимого выходного файла в формате ISO-2709 приведен на рис. 1.

Рисунок 1 – Пример записи формата ISO-2907.

Основываясь на данном формате, в проекте в качестве информационных носителей выбраны текстовые файлы, но только с Data Fields segment.

При внедрении системы в какое-либо предприятие формат содержимого может быть переделан путем добавления остальных сегментов.

Scrapy – простой и понятный модуль, который входит в любой дистрибутив Python. Разрабатываемая система написана на данном высокоуровневом языке программирования.


ГЛАВА 2 РАЗРАБОТКА КЛИЕНТСКОЙ ПРОГРАММЫ

2.1 Методики и результаты экспериментального исследования программного продукта

Решение поставленной задачи выполнено в несколько этапов:

  1. Создание виртуального окружение для проекта.
  2. Определение способа ввода входных данных.
  3. Определение критериев поиска.
  4. Разработка персональных систем скачивания статей для сайтов с разными структурами.
  5. Разработка универсальной системы автоматизированного скачивания статей с сайтов издательств.

Для создания виртуального окружения проекта был использован инструмент virtualenv, позволяющий устанавливать пакеты Python изолированно от системы (Рисунок 2). Виртуальное окружение предотвращает засорение операционной системы и дает возможность использовать разные версии пакета в разных проектах. Использование отличных друг от друга версий библиотек необходимо при работе над несколькими проектами, либо при транспортировке системы с одной вычислительной машина на другое. Так как на разных компьютерах могут быть установлены разные версии пакетов языков программирования или других служб, работа системы может быть нестабильна. Например, при переносе краулера с персонального компьютера под управлением операционной системы Windows 8 на другой под управлением операционной системы компании Microsoft более новой версии, требуемых установленных пакетов для работоспособности краулера, библиотек может не оказаться вовсе. Зачастую в таком случае требуется их установить при помощи предустановленного встроенного пакетного менеджера: для Windows десятого поколения ­ это OneGet, для операционных систем семейства Ubuntu – apt-get. Как правило, при установке любого пакета, происходит первоначально обновление списка пакетов в менеджере и инициализация последней версии загружаемой службы. В этом случае снова возникает проблема различия версий. Именно для этого в начале любого проекта необходимо при наличии возможности обезопасить разрабатываемую систему доступным виртуальным окружением. Virtualenv достаточно популярное виртуальное окружения для проектов разрабатываемых на высокоуровневом языке программирования Python. Кроме того, так как существуют различные поколения данного языка программирования, в Virtualenv имеется возможность установки определенной версии Python. В данном проекте было решено использовать язык программирования третьего поколения, данный выбор был сделан на основании того, что все больше разработчиков библиотек и фреймворков переходят на новые версии данного языка.