Научная статья на тему 'ИЗВЛЕЧЕНИЕ ДАННЫХ С ВЕБ-РЕСУРСОВ, СОДЕРЖАЩИХ РАЗНОРОДНУЮ ИНФОРМАЦИЮ'

ИЗВЛЕЧЕНИЕ ДАННЫХ С ВЕБ-РЕСУРСОВ, СОДЕРЖАЩИХ РАЗНОРОДНУЮ ИНФОРМАЦИЮ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
266
20
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МОБИЛЬНЫЕ ПРИЛОЖЕНИЯ / ПАРСИНГ / ВЕБ-РЕСУРС / СРЕДА РАЗРАБОТКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Цхошвили Д. З., Иванова Н. А.

В работе рассматривается процесс разработки мобильного приложения с использованием java-библиотеки Jsoup для извлечения разнородных данных с веб-ресурса в среде разработки Android Studio.

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

EXTRACTION OF DATA FROM WEB-RESOURCES, CONTAINING DIFFERENT INFORMATION

The paper discusses the process of developing a mobile application using the JSoup java library to extract heterogeneous data from a web resource in the Android Studio development environment.

Текст научной работы на тему «ИЗВЛЕЧЕНИЕ ДАННЫХ С ВЕБ-РЕСУРСОВ, СОДЕРЖАЩИХ РАЗНОРОДНУЮ ИНФОРМАЦИЮ»

УДК 004.4

ИЗВЛЕЧЕНИЕ ДАННЫХ С ВЕБ-РЕСУРСОВ, СОДЕРЖАЩИХ РАЗНОРОДНУЮ ИНФОРМАЦИЮ

Д. З. Цхошвили, Н. А. Иванова

ФГБОУ ВО «Брянский государственный университет имени академика И.Г. Петровского»

В работе рассматривается процесс разработки мобильного приложения с использованием java-библиотеки Jsoup для извлечения разнородных данных с веб-ресурса в среде разработки Android Studio.

Ключевые слова: Android Studio, java-библиотека, Jsoup, мобильные приложения, парсинг, веб-ресурс, среда разработки.

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

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

В качестве веб-ресурса, с которого будут извлекаться данные выбран coldfilm.ru, так как на этом сайте быстрее всего появляются новые серии сериалов в русской озвучке.

Для автоматизированного извлечения информации с веб-страниц существует 4 типа инструментов: headless-браузеры, SaaS решения, настольные приложения и библиотеки [1].

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

В научной статье «Использование java-библиотек в Android Studio для извлечения информации с веб-ресурсов» были рассмотрены наиболее популярные среди разработчиков java-библиотеки, которые предназначены для реализации парсинга в мобильных приложениях, такие как HtmlCleaner, HTMLParser, NekoHTML, JerichoHTMLParser и Jsoup [2].

Библиотека Jsoup выполняет такие функции, как разбор HTML из строки, файла или URL, поиск данных с использованием CSS или DOM селекторов, взаимодействие с элементами HTML и атрибутами [3].

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

В научной статье «Реализация парсинга средствами Java» был рассмотрен пример использования java-библиотеки Jsoup в процессе разработки простого мобильного

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

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

Процесс разработки данного приложения во многом аналогичен описанному в статье «Реализация парсинга средствами Java». Его можно разделить на три этапа: создание интерфейса, добавление библиотеки в проект и реализация функционала.

Для начала необходимо создать новый проект File/New/Project, задать имя и версию Android, остальные пункты оставить по умолчанию.

Далее нужно настроить цветовую тему приложения. Для этого открыть редактор тем Tools/Android/Theme Editor (рис.1), настроить тему и затем подключить ее к проекту во вкладке редактирования окна. Эта функция в Android Studio значительно облегчает создание интерфейса приложения.

Рис. 1. Редактор тем Android Studio.

Затем на форму activity_main нужно добавить компонент ListView, служащий для отображения списков (рис. 2).

8

а

I

§

§

Рис. 2. Добавление списка на форму.

Далее в папке layout необходимо создать второй файл list_item.xml. Он отображает содержимое элемента списка. Нужно добавить на форму следующие компоненты: текстовое поле - название сериала (name), изображение (flag), и текстовое поле - дату выхода (date)

(рис. 3).

android:layout_centerHorizontal="true" />

android: layout_width="wrap_content" android:layout_height="wrap_content"

android: layout_centerHorizontal="true" />

android:layout_width="wrap_content" android:layout_height="wrap_content"

Рис. 3. Настройка элементов списка.

На этом редактирование интерфейса приложения окончено. Следующий шаг -подключение библиотеки JSoup к проекту. В AndroidStudio удобно работать с библиотеками. В первую очередь, в SDK Manager (англ. Software development kit - содержит в себе разнообразные библиотеки, документацию и инструменты для разработки приложений)

необходимо загрузить пакет Android Support Repository. Он включает в себя скомпилированные версии библиотек. Далее необходимо в главном меню Android Studio выбрать File/Project Structure. В появившемся окне нужно выбрать необходимое приложение и перейти во вкладку Dependencies.

Справа нажать на зеленый значок и выбрать Library dependency (рис. 4). Откроется окно выбора библиотеки. В нем необходимо ввести в поисковую строку название библиотеки JSoup и выбрать предложенную версию.

Рис. 4. Подключение библиотеки JSoup.

На следующем шаге требуется разработать функционал. Открыть файл MainActivity.java и добавить в него следующий код:

Листинг 1

public Void doInBackground(Void... params) { arraylist = new ArrayList<HashMap<String, String>>(); //создание массива try {

arraylist.clear(); //очистка массива

for (int i=1; i <= 3; i++) { //загрузка данных с 1-3 страниц веб-ресурса Document doc = Jsoup.connect(http://coldfilm.ru/news/7page" + i).get(); // соединение с URL-адресом

for (Element div : doc.select("div[class=kino-item ignore-select]")) { HashMap<String, String> map = new HashMap<String, String>(); Elements name = div.select("span b"); //Получение названий сериалов Elements date = div.select("div[class=kino-date icon-left]"); //Получение постеров сериалов

Elements imgSrc = div.select("img[src]");

// Получение атрибута src

String imgSrcStrl = imgSrc.attr("src");

String imgSrcStr = "http://coldfilm.ru" + imgSrcStrl; // Получение полного адреса постеров map.put("name", name.text());

map.put("date", date.text()); // добавление данных в HaspMap map.put("flag", imgSrcStr);

arraylist.add(map); // Добавление извлеченных данных в массив

}

}

Затем необходимо создать файл ListViewAdapter он будет служить адаптером для извлеченных данных (листинг 2).

Листинг 2

public View getView(final int position, View convertView, ViewGroup parent) { TextView name;

TextView date; //описание переменных ImageView flag;

inflater = (Layoutlnflater) context

.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View itemView = inflater.inflate(R.layout.list item, parent, false); //определение layout, на котором будут отображены данные resultp = data.get(position);

name = (TextView) itemView.findViewById(R.id.name); date = (TextView) itemView.findViewById(R.id.date);

flag = (ImageView) itemView.findViewById(R.id.flag); //инициализация переменных name.setText(resultp.get(MainActivity.NAME));

date.setText(resultp.get(MainActivity.DATE)); //вывод извлеченных данных imageLoader.DisplayImage(resultp.get(MainActivity.FLAG), flag); return itemView;

}

Также нужно создать файл ImageLoader [5], с помощью которого будет происходить загрузка изображений (листинг 3).

Листинг 3

private Bitmap getBitmap(String url) { File f = fileCache.getFile(url); Bitmap b = decodeFile(f); if (b != null) return b;

try { //получение изображений с веб-ресурса Bitmap bitmap = null;

URL imageUrl = new URL(http://coldfilm.ru/news/?page");

HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection(); //

соединение с URL-адресом

conn.setConnectTimeout(30000);

conn.setReadTimeout(30000);

conn.setInstanceFollowRedirects(true);

InputStream is = conn.getInputStream();

OutputStream os = new FileOutputStream(f);

Utils.CopyStream(is, os);

os.close ();

conn.disconnect();

bitmap = decodeFile(f);

return bitmap;

} catch (Throwable ex) {

ex.printStackTrace();

if (ex instanceof OutOfMemoryError)memoryCache.clear();

return null; }

}

После этого нужно отредактировать файл AndroidManifest, добавив разрешение приложению выходить в Интернет (листинг 4).

Листинг 4

<uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permissionandroid:name="android.permission.INTERNET"/>

На этом разработка приложения закончена, и можно проверить его работоспособность на эмуляторе (рис. 5). В качестве виртуального устройства использовался Nexus One с диагональю экрана 3,7 дюйма и разрешением экрана 480*800 пикселей. Версия Android -

4.4.2. При запуске приложения на экран выводится список вышедших с русской озвучкой серий сериалов, а также их постеры и дата выхода.

1РИВ1

Бесстыдники 8 сезон 5 серия

Дата: Сегодня

Ходячие мертвецы 8 сезон 7 серия

Дата:Сегодня

Рис. 5. Запуск приложения на эмуляторе.

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

Представленный в статье способ использования библиотеки Jsoup для сбора данных будет применяться в разработке приложения «Walk To Cinema&TV», которое будет содержать в себе сведения о датах выхода сериалов, фильмов, рейтинги, каталоги и удобный календарь для наглядного отображения премьер фильмов и ТВ-шоу.

Список литературы

1. Inostudio. Разработка и реализация интернет-проектов [Электронный ресурс]. URL: https://inostudio.com/ru/article/web-parsing.html. (Дата обращения: 04.12.2017).

2. Цхошвили Д.З., Иванова Н.А. Использования Java-библиотек в Android Studio для извлечения информации с веб-ресурсов // Актуальные вопросы в науке и практике. Сборник статей по материалам II международной научно-практической конференции. - 2017. - T. 1(2). - № 1(2). - C. 136-142.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

3. Официальная страница JSoup. [Электронный ресурс]. URL: https://jsoup.org. (Дата обращения: 05.12.2017).

4. Цхошвили Д.З., Иванова Н.А. Реализация парсинга средствами Java // Ученые записки Брянского государственного университета». - 2017. - № 2 (6). - C.31-35. [Электронный ресурс]. URL: http//scim-brgu.ru/wp-content/arhiv/UZ-2017-N2.pdf. (Дата обращения: 05.12.2017).

5. Уроки Android-разработки Android Begin. [Электронный ресурс]. URL: http:/^^^^.androidbegin.com/tutorial/android-jsoup-listvi^^-images-t^^ts-html-tables-tutorial. (дата обращения: 04.12.2017).

Android Emulator - device5554

Сведения об авторах

Цхошвили Дарья Зурабовна - магистрант кафедры информатики и прикладной математики, ФГБОУ ВО «Брянский Государственный университет имени академика И.Г. Петровского», e-mail: [email protected].

Иванова Наталья Александровна - кандидат технических наук, доцент кафедры информатики и прикладной математики, ФГБОУ ВО «Брянский Государственный университет имени академика И.Г. Петровского», e-mail: [email protected].

EXTRACTION OF DATA FROM WEB-RESOURCES, CONTAINING DIFFERENT INFORMATION

D. Z. Tskhoshvili, N. A. Ivanova

Bryansk State University named after Academician I.G. Petrovsky

The paper discusses the process of developing a mobile application using the JSoup java library to extract heterogeneous data from a web resource in the Android Studio development environment. Keywords: Android Studio, java-library, Jsoup, mobile applications, parsing, web resource, development environment.

References

1. Inostudio. Development and implementation of Internet projects [Electronic resource]. URL: https://inostudio.com/en/article/web-parsing.html. (Date of circulation: 04.12.2017).

2. Tskhoshvili D.Z., Ivanova N.A. Using Java libraries in Android Studio to extract information from web resources // Actual questions in science and practice. Collected papers on the materials of the II International Scientific and Practical Conference. - 2017. - V. 1 (2). - No 1 (2). -P.136-142.

3. Official page of JSoup. [Electronic resource]. URL: https://jsoup.org. (Date of circulation: 05.12.2017).

4. Zoshvili DZ, Ivanova NA Implementation of parsing by means of Java // Uchenye zapiski Bryanskogo gosudarstvennogo universiteta. - 2017. - № 2 (6). - P. 31-35.

[Electronic resource]. URL: http:// scim-brgu.ru / wp-content / arhiv / UZ-2017-N2.pdf. (Date of circulation: 05.12.2017).

5. Lessons of Android-development Android Begin. [Electronic resource]. URL: http://www.androidbegin.com/tutoria//android-jsoup-/istàew-images-texts-htm/-tab/es-tutoria/. (date of circulation: 04.12.2017).

About authors

Tskhoshvili D.Z. - graduate student, Department of Computer Science and Applied Mathematics, Bryansk State University named after Academician I.G. Petrovsky, e-mail: darya9312@mai/.ru.

Ivanova N.A. - PhD in Technical Science, Associate Professor, Department of Computer Science and Applied Mathematics, Bryansk State University named after academician I.G. Petrovsky, e-mail: ivanova_nata/a@mai/.ru.

i Надоели баннеры? Вы всегда можете отключить рекламу.