Подключение jsoup android studio

Библиотека jsoup — Суп с котом

Вместо предисловия

Первоначально статья писалась, когда деревья были большими, коты были котятами, Android был версии 2.3, а библиотека jsoup была версии 1.6.1.

С тех пор утекло много воды. Хорошая новость — библиотека подросла до версии 1.13.1, стала чуть меньше размером, стала быстрее работать (почти в два раза). Плохая новость — мои примеры, связанные с интернетом, перестали работать в Android 4.0, так как теперь явно запретили использовать сетевые операции в основном потоке.

Я оставлю старую версию статьи здесь. Если вы пишете программы под старые устройства, то всё остаётся без изменений. Примеры под новые устройства находятся в закрытой зоне 4 курса.

Общая информация

Рассмотрим примеры работы с библиотекой jsoup. Java-библиотека jsoup предназначена для разбора HTML-страниц (парсинг), позволяя извлечь необходимые данные, используя DOM, CSS и методы в стиле jQuery.

Библиотека поддерживает спецификации HTML5 и позволяет парсить страницы, как это делают современные браузеры.

Библиотеке можно подсунуть для анализа URL, файл или строку.

Подключаем библиотеку

В Android Studio пропишите в файле build.gradle строку в блоке зависимостей.

Создаём новый проект JsoupDemo. Добавляем на форму кнопку и TextView.

После установки библиотеки вам нужно получить документ для разбора текста. Это может быть страница на сайте или локальный файл на устройстве. Таким образом вам надо подключиться к нужной странице и получить объект класса Document. При импортировании обращайте внимание на полное название класса org.jsoup.nodes.Document, так как многие пакеты имеют в своём составе одноимённый класс.

Получив документ в своё распоряжение, вы можете извлекать требуемую информацию. Например, вы можете получить все теги meta:

Метод select() позволяет получить нужные теги.

Если нужно получить атрибут тега, то используйте метод attr():

Можно выбрать теги с заданным классом. Например, на странице встречается тег типа

Первый пример для знакомства

Для первого знакомства разберём простой пример. А потом будем его усложнять. Создадим переменную, содержащий html-текст. Далее вызываем библиотеку jsoup и смотрим на результат.

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

у первого параграфа. Однако библиотека сама подставила недостающие элементы. Именно так поступают и браузеры, если веб-мастер по невнимательности забывает ставить закрывающие парные теги.

Что мы сделали? Мы передали нужный html-текст библиотеке Jsoup и попросили его осуществить его разбор (метод parse()). В результате мы получаем экземпляр класса Document, из которого с помощью метода html() извлекаем уже обработанный текст, с которым можно работать дальше.

Если у вас всё получилось, то можно перейти к более сложным примерам. Подробная документация по методам и свойствам есть на сайте библиотеки. Вам нужно только пробовать.

Читайте также:  Автозапуск андроид при подаче питания

Извлекаем заголовок страницы

Заголовок страницы находится в теге . Чтобы получить текст заголовка, воспользуемся методом Document.title():

Извлекаем ссылки

Теперь попробуем поработать с ссылками. В нашем тексте есть ссылка, которую можно разбить на несколько логических элементов: адрес, на который ведёт ссылка, текст в ссылке и полная ссылка, которая объединяет оба элемента.

Начнём с адреса ссылки:

Чтобы получить текст ссылки:

И, наконец, общий вариант:

Разбор текста с сайта

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

Я подключаюсь к самой известной странице в мире http://developer.alexanderklimov.ru/android/ и получаю его заголовок.

Не забудьте установить разрешение на подключение к Интернету вашей программе. Я сам сначала долго тупил, не понимая, почему моя программа вылетала с ошибкой. Но, посмотрев в честные глаза своего кота, я понял в чем моя ошибка и исправил ее. Коты рулят.

Разбор текста из файла

Последний пример, который мы не разобрали — это разбор текста из файла. В этом случае используется метод Jsoup.parse(File in, String charsetName, String baseUri):

Попробуйте самостоятельно. Удачи в программировании! Да пребудет с вами кот!

Источник

Getting Started with JSOUP in Android

Nov 22, 2017 · 3 min read

Jsoup is a Java html parser. It is a Java library that is used to parse html documents. Jsoup gives programming interface to concentrate and control information from URL or HTML documents. It utilizes DOM, CSS and Jquery-like systems for concentrating and controlling records.

In this tutorial, you will get to know few steps to start with in parsing html document in an android application interface using Jsoup.

Update

Kindly note that this implementation might not be useful anymore. You can check out for articles that explain this with latest technologies. Thanks! 🙂

Example

This simple android application shows details of Firebase with Jsoup used to parse the logo and title from the web page.

Let’s get s t arted. Create a new android project with an Empty Activity.

Add Jsoup dependency to the app level of your build.gradle file since this is an external library.

Add Internet permission to the Android Manifest file for internet access.

Prepare a layout to display the data that will be fetched from the web page. For example, logo and title.

Go to your MainActivity.java class, in the OnCreate() method, initialize your views. Create an AsyncTask class that will be used to fetch the data in the background before displaying it on the main thread.

Let me explain some lines of codes and elements of Jsoup before calling them in the AsyncTask class.

In the above codes;

Document document = Jsoup.connect(url).get(): Document is a Jsoup node API element used in connecting to the website.

Читайте также:  Фоновые процессы android studio

Element img = document.select(“img”).first() : allows the program check through the webpage to get the first since logo is usually placed at the very beginning of the code.

String imgSrc = img.absUrl(“src”): allows the program check through absolute attribute ‘src’ of and get the respective URL.

InputStream input = new java.net.URL().openStream(imgSrc): this downloads the logo from the url.

Bitmap bitmap = BitmapFactory.decodeStream(input): this code creates the logo bitmap.

String title = document.title(): this automatically gets the title of the website.

These lines of codes work at the background process in the doInBackground() method and the respective results are displayed in the onPostexecute() method. Then the AsyncTask class is called to execute in the onCreate() method.

Running the application gives;

This brings us to the end of the tutorial… So far, Jsoup provides a very convenient API for extracting and manipulating data.

Источник

Android Basic JSOUP Tutorial

Last Updated: October 24, 2013

In this tutorial, you will learn how to implement JSOUP open source java library in your Android application. JSOUP provides a very convenient API for extracting and manipulating data, using DOM, CSS, and jquery-like methods. JSOUP allows you to scrape and parse HTML from a URL, file, or string and many more. We will create 3 buttons on the main view and each button will perform different tasks such as showing the website title, description and a logo. So lets begin…

Before you proceed with this tutorial, download the latest JSOUP library from here.

Paste your downloaded Jsoup file into your project libs folder as shown on the image below.

Create a new project in Eclipse File > New > Android Application Project. Fill in the details and name your project JsoupTutorial.

Application Name : JsoupTutorial

Project Name : JsoupTutorial

Package Name : com.androidbegin.jsouptutorial

Open your MainActivity.java and paste the following code.

MainActivity.java

In this activity, we have created three buttons that response to three different AsyncTask. Before I proceed with further explanation, see the steps below on how to get the html source codes from a website.

Step 1 : Visit https://www.androidbegin.com with any preferred Internet browser on your PC

Step 2 : Right-Click on an open space and select “View page source

Step 3 : Website source codes

A website source code determines how your webpages should appear. However, source code of a web page will only display information and code that is not processed by the server.

The first button retrieves the website title. This is a way to get the page title.

Java Code

Website Source Code

The second button retrieves the website description. By using Elements, we are able to specify the exact location of the data.

Java Code

Website Source Code

The third button retrieves the website logo. By using Elements, we are able to specify the exact location of the data.

Java Code

Website Source Code

Next, create an XML graphical layout for the MainActivity. Go to res > layout > Right Click on layout > New > Android XML File

Читайте также:  Сервисы майкрософт для андроид

Name your new XML file activity_main.xml and paste the following code.

activity_main.xml

Next, change the application name and texts. Open your strings.xml in your res > values folder and paste the following code.

strings.xml

In your AndroidManifest.xml, we need to declare permissions to allow the application to connect to the Internet. Open your AndroidManifest.xml and paste the following code.

AndroidManifest.xml

Output:

Source Code

[purchase_link text=”Purchase to Download Source Code” style=”button” color=”green”]

Latest comments

thank you so much!!

Android Basic JSOUP Tutorial

I can’t get bitmap to resolved I have put in import android.graphics.BitmapFactory; and import android.graphics.Bitmap; but bit map is still unresolved what am I doing wrong?

Christian Munch Hammervig

Android Basic JSOUP Tutorial

Because of my app navigation I use Fragments. Is it possible to use your tutorial in my situation?

Android Basic JSOUP Tutorial

hey there,i want to get news post from particular site which doesnt provide feeds over JSON/RSS.i have decided to use this method to scrape the contents,how can i scrape individual posts from the site an put it into list view?

Источник

Разбор HTML в Android с помощью Jsoup

В этом посте я хочу описать, как использовать JSoup в Android. JSoup — это библиотека Java, которая помогает нам извлекать HTML-файлы и манипулировать ими. Есть некоторые ситуации, когда мы хотим проанализировать и извлечь некоторую информацию из HTML-страницы, а не отображать ее. В этом случае мы можем использовать JSoup, который имеет набор мощных API, очень простых в использовании и интегрируемых в наши проекты Android. В этом посте мы обсудим, как настроить и Android-проект, который использует JSoup и как извлечь некоторую информацию.

JSoup введение

Как уже говорилось, JSoup — это библиотека Java, предоставляющая набор API для извлечения и управления файлами HTML. Существует несколько способов чтения и анализа HTML-страницы; в нашем случае мы хотим получить его с удаленного сервера, а затем мы должны предоставить URL. Если мы хотим проанализировать страницу как DOM, мы имеем:

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

Например, если мы хотим получить весь тег с именем meta , мы имеем:

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

где name это имя атрибута. Кроме того, мы можем выбрать все элементы на странице HTML, которые имеют определенное значение класса CSS. Например, на этом сайте есть некоторые элементы, которые имеют класс CSS, равный теме , поэтому мы имеем:

где мы выбираем только тег h2, имеющий класс с именем topic.

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

Источник

Оцените статью