Научный руководитель: Вильданов Алмаз Нафкатович
к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал
Веб-скрейпинг с использованием библиотеки Jsoup остается высокоактуальной темой для Android-разработчиков, поскольку позволяет автоматизировать сбор данных с веб-сайтов, включая прогнозы погоды, новости и коммерческую информацию. В условиях отсутствия открытых API у многих популярных ресурсов, включая Gismeteo, эта техника становится востребованной в мобильной разработке, аналитике и автоматизации задач, где прямой доступ к данным невозможен.
В данной работе выполняется парсинг погоды для Ростова-на-Дону с сайта Gismeteo (рисунок 1) с использованием библиотеки Jsoup для извлечения температуры из HTML-структуры страницы. Для обеспечения корректной работы сетевых запросов применяется ExecutorService, организующий фоновый поток, а обновление пользовательского интерфейса выполняется через Handler. Подобные скрипты востребованы при создании мобильных информеров, особенно для регионов, данные по которым недоступны через официальные API. Стабильность библиотеки Jsoup и встроенных средств многопоточности Android обеспечивает надежность работы приложения в условиях ограниченных ресурсов мобильного устройства.

Рисунок 1. Сайт погоды
Алгоритм решения задачи по созданию Android-приложения для отображения погоды включает следующие последовательные шаги разработки:
- добавляем разрешение на доступ к интернету в файл AndroidManifest.xml;
- подключаем зависимость библиотеки Jsoup в файле build.gradle модуля приложения;
- создаём интерфейс с кнопкой для запуска парсинга и текстовым полем для отображения результата;
- инициализируем ExecutorService для выполнения сетевого запроса в фоновом потоке;
- выполняем подключение к сайту Gismeteo с указанием URL нужного города;
- находим элемент с классом “weather-value” и извлекаем из него значение температуры;
- обрабатываем возможные исключения при сетевом подключении;
- используем Handler для обновления TextView с полученными данными в UI-потоке.
Ниже приведен фрагмент кода основной логики приложения:
private View.OnClickListener myOnClick = new View.OnClickListener() {
public void onClick(View v) {
ExecutorService executor = Executors.newSingleThreadExecutor();
Handler handler = new Handler(Looper.getMainLooper());
executor.execute(new Runnable() {
String title;
@Override
public void run() {
//Background work here
try {
Document doc = Jsoup.connect(“https://www.gismeteo.ru/weather-rostov-na-donu-5110/”).get();
Elements ele = doc.select(“div[class=weather-value]“);
Element pogoda = ele.select(“temperature-value”).first();
title = pogoda.val();
} catch (IOException e) {
// e.printStackTrace();
title = “error”;
}
handler.post(new Runnable() {
@Override
public void run() {
//UI Thread work here
myTextView.setText(“Ростов-на-Дону: ” + title);
}
});
}
});
}
};
В представленном коде при нажатии на кнопку создается однопоточный ExecutorService, который выполняет сетевой запрос в фоне. Jsoup подключается к странице города, находит элемент с классом “weather-value” и извлекает из вложенного тега “temperature-value” значение температуры. В случае ошибки (отсутствие интернета, изменение структуры сайта) в переменную title записывается “error”. После завершения работы Handler обновляет TextView в главном потоке.

Рисунок 2. Интерфейс разработанного приложения с результатом парсинга
Заключение
Разработанное Android-приложение успешно выполняет парсинг данных о погоде с сайта Gismeteo и отображает температуру для указанного города. Использование библиотеки Jsoup в сочетании с ExecutorService и Handler обеспечивает стабильную работу приложения без блокировки пользовательского интерфейса. Предложенный подход может быть адаптирован для парсинга любых данных с веб-страниц, что расширяет возможности мобильных приложений при отсутствии официальных API. Важно помнить об этических аспектах и соблюдении правил robots.txt при разработке подобных решений. Дальнейшее развитие приложения может включать добавление списка городов, автоматическое обновление данных и визуализацию погодных условий.
Библиографический список
- Коматинени, С. Android-программирование для профессионалов / С. Коматинени, Д. Маклин. — 4-е изд. — Санкт-Петербург : Питер, 2021. — 832 с. — ISBN 978-5-4461-1678-2.
- Хортон, Д. Android. Программирование для профессионалов / Д. Хортон. — Москва : Эксмо, 2020. — 672 с. — ISBN 978-5-04-113108-5.
- Гриффитс, Д. Head First. Программирование для Android / Д. Гриффитс, Д. Гриффитс. — Санкт-Петербург : Питер, 2019. — 912 с. — ISBN 978-5-4461-1126-8.
- Мейер, Б. Android 6 для программистов. Разработка приложений / Б. Мейер. — Санкт-Петербург : БХВ-Петербург, 2021. — 528 с. — ISBN 978-5-9775-3849-3.
