<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Электронный научно-практический журнал «Современные научные исследования и инновации» &#187; Jsoup</title>
	<atom:link href="http://web.snauka.ru/issues/tag/jsoup/feed" rel="self" type="application/rss+xml" />
	<link>https://web.snauka.ru</link>
	<description></description>
	<lastBuildDate>Sat, 18 Apr 2026 09:41:14 +0000</lastBuildDate>
	<language>ru</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Разработка мобильного приложения для парсинга новостей сайта университета на платформе Android</title>
		<link>https://web.snauka.ru/issues/2026/03/104291</link>
		<comments>https://web.snauka.ru/issues/2026/03/104291#comments</comments>
		<pubDate>Sat, 07 Mar 2026 07:36:21 +0000</pubDate>
		<dc:creator>Романов Илья Александрович</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[Jsoup]]></category>
		<category><![CDATA[Kotlin]]></category>
		<category><![CDATA[ListView]]></category>
		<category><![CDATA[Parsing]]></category>
		<category><![CDATA[многопоточность]]></category>
		<category><![CDATA[новости]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/03/104291</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал В современном информационном обществе оперативный доступ к новостным материалам становится критически важным. Многие университеты публикуют актуальные события на своих официальных сайтах, однако не всегда предоставляют удобные мобильные интерфейсы или API для получения этих данных. Разработка собственного приложения, выполняющего парсинг новостей, позволяет решить эту проблему, [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;"><em>Научный руководитель: </em><em>Вильданов Алмаз Нафкатович<br />
</em><em>к.ф.-м.н., </em><em>Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p>В современном информационном обществе оперативный доступ к новостным материалам становится критически важным. Многие университеты публикуют актуальные события на своих официальных сайтах, однако не всегда предоставляют удобные мобильные интерфейсы или API для получения этих данных. Разработка собственного приложения, выполняющего парсинг новостей, позволяет решить эту проблему, предоставив пользователю компактный и быстрый доступ к информации. Платформа Android с её широкими возможностями и библиотекой Jsoup для парсинга HTML является идеальной средой для реализации такой задачи. В учебном процессе создание подобного приложения позволяет освоить важные аспекты мобильной разработки: работу с сетью, многопоточность, адаптеры и обработку данных. В данной работе рассматривается создание приложения для парсинга новостей с сайта Пермского университета.</p>
<p>Алгоритм решения задачи по созданию приложения для парсинга новостей включает следующие последовательные шаги:</p>
<ul>
<li>добавляем в файл манифеста разрешение на доступ к Интернету;</li>
<li>в разметке activity_main.xml размещаем ListView на весь экран;</li>
<li>в файле build.gradle (модуля) подключаем зависимость implementation &#8216;org.jsoup:jsoup:1.18.1&#8242;;</li>
<li>в MainActivity объявляем переменные: список новостей, адаптер и ссылку на ListView;</li>
<li>инициализируем адаптер ArrayAdapter с простым макетом и устанавливаем его на ListView;</li>
<li>создаём однопоточный исполнитель ExecutorService для выполнения сетевого запроса в фоне;</li>
<li>получаем главный обработчик Handler для последующего обновления UI;</li>
<li>в фоновом потоке формируем URL страницы с новостями (например, с поддержкой пагинации);</li>
<li>с помощью Jsoup подключаемся к странице, указывая User-Agent для имитации браузера;</li>
<li>анализируем структуру HTML и выбираем все блоки, содержащие новости (используя CSS-селекторы);</li>
<li>для каждого блока извлекаем заголовок и дату публикации, добавляем их в список newsList;</li>
<li>после завершения парсинга через handler.post обновляем адаптер, вызывая notifyDataSetChanged();</li>
<li>обрабатываем возможные исключения IOException и выводим сообщение об ошибке в список.</li>
</ul>
<p><img class="aligncenter" src="https://web.snauka.ru/wp-content/uploads/2026/03/030726_0711_11.png" alt="" /></p>
<p style="text-align: center;">Рисунок 1. Внешний вид приложения со списком новостей</p>
<p>Ниже приведён фрагмент программного кода, реализующего основную логику парсинга (файл MainActivity.kt):</p>
<p>&nbsp;</p>
<p>import android.os.Bundle</p>
<p>import android.os.Handler</p>
<p>import android.os.Looper</p>
<p>import android.widget.ArrayAdapter</p>
<p>import android.widget.ListView</p>
<p>import androidx.appcompat.app.AppCompatActivity</p>
<p>import org.jsoup.Jsoup</p>
<p>import java.io.IOException</p>
<p>import java.util.concurrent.Executors</p>
<p>&nbsp;</p>
<p>class MainActivity : AppCompatActivity() {</p>
<p style="padding-left: 30px;">    private lateinit var listView: ListView</p>
<p style="padding-left: 30px;">    private val newsList = ArrayList&lt;String&gt;()</p>
<p style="padding-left: 30px;">    private lateinit var adapter: ArrayAdapter&lt;String&gt;</p>
<p style="padding-left: 30px;">    override fun onCreate(savedInstanceState: Bundle?) {</p>
<p style="padding-left: 60px;">        super.onCreate(savedInstanceState)</p>
<p style="padding-left: 60px;">        setContentView(R.layout.activity_main)</p>
<p style="padding-left: 60px;">        listView = findViewById(R.id.list)</p>
<p style="padding-left: 60px;">        adapter = ArrayAdapter(this, android.R.layout.simple_list_item_1, newsList)</p>
<p style="padding-left: 60px;">        listView.adapter = adapter</p>
<p style="padding-left: 60px;">        val executor = Executors.newSingleThreadExecutor()</p>
<p style="padding-left: 60px;">        val handler = Handler(Looper.getMainLooper())</p>
<p style="padding-left: 60px;">        executor.execute {</p>
<p style="padding-left: 90px;">            try {</p>
<p style="padding-left: 120px;">                // Парсинг первых трёх страниц новостей сайта ПГНИУ</p>
<p style="padding-left: 120px;">                for (page in 1..3) {</p>
<p style="padding-left: 150px;">                    val url = &#8220;https://www.psu.ru/news?page=$page&#8221;</p>
<p style="padding-left: 150px;">                    val doc = Jsoup.connect(url)</p>
<p style="padding-left: 180px;">                        .userAgent(&#8220;Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36&#8243;)</p>
<p style="padding-left: 180px;">                        .get()</p>
<p style="padding-left: 150px;">                    // Селекторы подбираются на основе анализа HTML-кода сайта</p>
<p style="padding-left: 150px;">                    val newsItems = doc.select(&#8220;.news-item&#8221;) // пример класса</p>
<p style="padding-left: 150px;">                    for (item in newsItems) {</p>
<p style="padding-left: 180px;">                        val title = item.selectFirst(&#8220;.news-title&#8221;)?.text() ?: &#8220;Без заголовка&#8221;</p>
<p style="padding-left: 180px;">                        val date = item.selectFirst(&#8220;.news-date&#8221;)?.text() ?: &#8220;Дата не указана&#8221;</p>
<p style="padding-left: 180px;">                        newsList.add(&#8220;$title ($date)&#8221;)</p>
<p style="padding-left: 150px;">                    }</p>
<p style="padding-left: 120px;">                }</p>
<p style="padding-left: 90px;">            } catch (e: IOException) {</p>
<p style="padding-left: 120px;">                e.printStackTrace()</p>
<p style="padding-left: 120px;">                newsList.add(&#8220;Ошибка загрузки: ${e.message}&#8221;)</p>
<p style="padding-left: 90px;">            }</p>
<p style="padding-left: 90px;">            handler.post {</p>
<p style="padding-left: 120px;">                adapter.notifyDataSetChanged()</p>
<p style="padding-left: 90px;">            }</p>
<p style="padding-left: 60px;">        }</p>
<p style="padding-left: 30px;">    }</p>
<p>}</p>
<p><em>Примечание: представленные CSS-селекторы являются условными и требуют уточнения при реальной разработке на основе актуальной структуры сайта.</em></p>
<p>Данный код демонстрирует типовую схему парсинга: фоновый поток, подключение к странице, извлечение данных и обновление UI. Использование ExecutorService и Handler гарантирует безопасную работу с сетью и интерфейсом.</p>
<p style="text-align: center;"><strong>Заключение</strong></p>
<p>В ходе выполнения лабораторной работы было разработано Android-приложение, выполняющее парсинг новостей с сайта Пермского университета. Применение библиотеки Jsoup позволило эффективно извлекать данные из HTML-структуры. Реализована многопоточная обработка сетевых запросов, исключающая блокировку пользовательского интерфейса. Адаптер ListView обеспечил наглядное отображение полученных новостей. Приложение может быть легко адаптировано для других сайтов путём изменения селекторов и URL. Полученные навыки являются фундаментом для разработки более сложных приложений, работающих с веб-данными.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/03/104291/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Разработка Android‑приложения для отображения погоды с использованием Gismeteo и Jsoup</title>
		<link>https://web.snauka.ru/issues/2026/03/104431</link>
		<comments>https://web.snauka.ru/issues/2026/03/104431#comments</comments>
		<pubDate>Tue, 31 Mar 2026 13:31:53 +0000</pubDate>
		<dc:creator>author20348</dc:creator>
				<category><![CDATA[05.00.00 ТЕХНИЧЕСКИЕ НАУКИ]]></category>
		<category><![CDATA[Android]]></category>
		<category><![CDATA[ExecutorService]]></category>
		<category><![CDATA[Gismeteo]]></category>
		<category><![CDATA[Handler]]></category>
		<category><![CDATA[Jsoup]]></category>
		<category><![CDATA[мобильная разработка]]></category>
		<category><![CDATA[парсинг погоды]]></category>

		<guid isPermaLink="false">https://web.snauka.ru/issues/2026/03/104431</guid>
		<description><![CDATA[Научный руководитель: Вильданов Алмаз Нафкатович к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал Веб-скрейпинг с использованием библиотеки Jsoup остается высокоактуальной темой для Android-разработчиков, поскольку позволяет автоматизировать сбор данных с веб-сайтов, включая прогнозы погоды, новости и коммерческую информацию. В условиях отсутствия открытых API у многих популярных ресурсов, включая Gismeteo, эта техника становится востребованной в мобильной разработке, аналитике [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: center;" align="right"><em>Научный руководитель: Вильданов Алмаз Нафкатович</em><br />
<em>к.ф.-м.н., Уфимский университет науки и технологий, Нефтекамский филиал</em></p>
<p>Веб-скрейпинг с использованием библиотеки Jsoup остается высокоактуальной темой для Android-разработчиков, поскольку позволяет автоматизировать сбор данных с веб-сайтов, включая прогнозы погоды, новости и коммерческую информацию. В условиях отсутствия открытых API у многих популярных ресурсов, включая Gismeteo, эта техника становится востребованной в мобильной разработке, аналитике и автоматизации задач, где прямой доступ к данным невозможен.</p>
<p>В данной работе выполняется парсинг погоды для Ростова-на-Дону с сайта Gismeteo (рисунок 1) с использованием библиотеки Jsoup для извлечения температуры из HTML-структуры страницы. Для обеспечения корректной работы сетевых запросов применяется ExecutorService, организующий фоновый поток, а обновление пользовательского интерфейса выполняется через Handler. Подобные скрипты востребованы при создании мобильных информеров, особенно для регионов, данные по которым недоступны через официальные API. Стабильность библиотеки Jsoup и встроенных средств многопоточности Android обеспечивает надежность работы приложения в условиях ограниченных ресурсов мобильного устройства.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-104436" title="ris1" src="https://web.snauka.ru/wp-content/uploads/2026/03/ris12.png" alt="" width="516" height="234" /></p>
<p align="center">Рисунок 1. Сайт погоды</p>
<p align="left">Алгоритм решения задачи по созданию Android-приложения для отображения погоды включает следующие последовательные шаги разработки:</p>
<ul>
<li>добавляем разрешение на доступ к интернету в файл AndroidManifest.xml;</li>
<li>подключаем зависимость библиотеки Jsoup в файле build.gradle модуля приложения;</li>
<li>создаём интерфейс с кнопкой для запуска парсинга и текстовым полем для отображения результата;</li>
<li>инициализируем ExecutorService для выполнения сетевого запроса в фоновом потоке;</li>
<li>выполняем подключение к сайту Gismeteo с указанием URL нужного города;</li>
<li>находим элемент с классом &#8220;weather-value&#8221; и извлекаем из него значение температуры;</li>
<li>обрабатываем возможные исключения при сетевом подключении;</li>
<li>используем Handler для обновления TextView с полученными данными в UI-потоке.</li>
</ul>
<p align="left">Ниже приведен фрагмент кода основной логики приложения:</p>
<p style="background: white;"><span><span style="color: #0033b3;">private </span>View<span style="color: #080808;">.</span>OnClickListener <span style="color: #871094;">myOnClick <span style="color: #080808;">= <span style="color: #0033b3;">new </span>View.</span>OnClickListener<span style="color: #080808;">() {</span></span></span></p>
<p style="background: white; padding-left: 30px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;">public void <span style="color: #00627a;">onClick<span style="color: #080808;">(</span>View v<span style="color: #080808;">) {</span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;">ExecutorService executor <span style="color: #080808;">= </span>Executors<span style="color: #080808;">.<em>newSingleThreadExecutor</em>();</span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;">Handler handler <span style="color: #080808;">= <span style="color: #0033b3;">new <span style="color: #080808;">Handler(</span>Looper<span style="color: #080808;">.<em>getMainLooper</em>());</span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 60px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;">executor<span style="color: #080808;">.execute(<span style="color: #0033b3;">new </span>Runnable() {</span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;">String <span style="color: #871094;">title<span style="color: #080808;">;</span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;">@Override</span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 90px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;">public void <span style="color: #00627a;">run<span style="color: #080808;">() {</span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>//Background work here</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;">try <span style="color: #080808;">{</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;">Document doc <span style="color: #080808;">= </span>Jsoup<span style="color: #080808;">.<em>connect</em>(<span style="color: #067d17;">&#8220;https://www.gismeteo.ru/weather-rostov-na-donu-5110/&#8221;<span style="color: #080808;">).get();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;">Elements ele <span style="color: #080808;">= </span>doc<span style="color: #080808;">.select(<span style="color: #067d17;">&#8220;div[class=weather-value]&#8220;<span style="color: #080808;">);</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;">Element pogoda <span style="color: #080808;">= </span>ele<span style="color: #080808;">.select(<span style="color: #067d17;">&#8220;temperature-value&#8221;<span style="color: #080808;">).first();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;">title <span style="color: #080808;">= </span>pogoda<span style="color: #080808;">.val();</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">} <span style="color: #0033b3;">catch <span style="color: #080808;">(</span>IOException e<span style="color: #080808;">) {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>// e.printStackTrace();</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;">title <span style="color: #080808;">= <span style="color: #067d17;">&#8220;error&#8221;<span style="color: #080808;">;</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;">}</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 120px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;">handler<span style="color: #080808;">.post(<span style="color: #0033b3;">new </span>Runnable() {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;">@Override</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 150px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;">public void <span style="color: #00627a;">run<span style="color: #080808;">() {</span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="background: white; padding-left: 180px;"><span><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #0033b3;"><span style="color: #080808;"><span style="color: #8c8c8c;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #851691;"><span style="color: #080808;"><span style="color: #9e880d;"><span style="color: #0033b3;"><span style="color: #00627a;"><span style="color: #080808;"><span style="color: #8c8c8c;"><em>//UI Thread work here</em></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></p>
<p style="padding-left: 180px;"><span style="color: #871094;">myTextView<span style="color: #080808;">.setText(<span style="color: #067d17;">&#8220;Ростов-на-Дону: &#8221; <span style="color: #080808;">+ <span style="color: #871094;">title<span style="color: #080808;">);</span></span></span></span></span></span></p>
<p style="padding-left: 150px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p style="padding-left: 120px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">});</span></span></span></span></span></span></p>
<p style="padding-left: 90px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p style="padding-left: 60px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">});</span></span></span></span></span></span></p>
<p style="padding-left: 30px;"><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">}</span></span></span></span></span></span></p>
<p><span style="color: #871094;"><span style="color: #080808;"><span style="color: #067d17;"><span style="color: #080808;"><span style="color: #871094;"><span style="color: #080808;">};<br />
</span></span></span></span></span></span></p>
<p style="background: white;"><span style="color: #080808;"><br />
</span></p>
<p>В представленном коде при нажатии на кнопку создается однопоточный ExecutorService, который выполняет сетевой запрос в фоне. Jsoup подключается к странице города, находит элемент с классом &#8220;weather-value&#8221; и извлекает из вложенного тега &#8220;temperature-value&#8221; значение температуры. В случае ошибки (отсутствие интернета, изменение структуры сайта) в переменную title записывается &#8220;error&#8221;. После завершения работы Handler обновляет TextView в главном потоке.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-104437" title="ris2" src="https://web.snauka.ru/wp-content/uploads/2026/03/ris2.png" alt="" width="372" height="173" /></p>
<p align="center">Рисунок 2. Интерфейс разработанного приложения с результатом парсинга</p>
<p style="text-align: left;" align="center"><strong>Заключение</strong><strong> </strong></p>
<p align="left">Разработанное Android-приложение успешно выполняет парсинг данных о погоде с сайта Gismeteo и отображает температуру для указанного города. Использование библиотеки Jsoup в сочетании с ExecutorService и Handler обеспечивает стабильную работу приложения без блокировки пользовательского интерфейса. Предложенный подход может быть адаптирован для парсинга любых данных с веб-страниц, что расширяет возможности мобильных приложений при отсутствии официальных API. Важно помнить об этических аспектах и соблюдении правил robots.txt при разработке подобных решений. Дальнейшее развитие приложения может включать добавление списка городов, автоматическое обновление данных и визуализацию погодных условий.</p>
]]></content:encoded>
			<wfw:commentRss>https://web.snauka.ru/issues/2026/03/104431/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
