Как получить HTML-источник URL-адреса в Android?

В моем приложении Kotlin для Android я хочу сделать следующее:

  1. Получить HTML-источник URL-адреса
  2. Получите URL-адрес из первого тега img внутри полученного источника HTML.

Как мне это сделать? Существует ли библиотека для Android, в которой вы можете отправить URL-адрес и получить взамен исходный код HTML?

Что такое «метаданные» в этом контексте? Вы можете получить HTML, просто загрузив веб-страницу с помощью клиентского API HTTP, такого как OkHttp.

CommonsWare 03.04.2022 20:27

@CommonsWare Извините, это было непонятно. Я пересмотрел вопрос, так как считаю, что мне нужен только исходный код HTML веб-страницы. Чтобы ответить на ваш другой вопрос, я не пытаюсь загрузить веб-сайт со стороны пользователя. Я хочу просто получить исходный HTML-код веб-сайта без необходимости показывать фактический сайт или загружать его пользователю.

Tom Darious 03.04.2022 20:37
0
2
25
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Get the HTML source of a URL

Используйте любой HTTP-клиентский API. Я рекомендую OkHttp, но есть и много других.

Get the URL from the first img tag inside the HTML source that was retrieved

Проанализируйте HTML с помощью анализатора HTML и используйте результат анализа, чтобы найти нужный HTML-тег. JSoup довольно популярен, и он также включает HTTP-клиент, который вы можете использовать вместо OkHttp или чего-то еще.

Вы бы закончили с чем-то вроде:

val doc = Jsoup.connect("YOUR URL GOES HERE").get()
val firstImg = doc.select("img").first()

Строка val doc выдает ошибку android.os.NetworkOnMainThreadException. У меня уже есть OkHttp в моем build.gradle, но я не уверен, как его можно использовать в этом контексте.

Tom Darious 04.04.2022 19:13

@TomDarious: вам нужно выполнять эту работу в фоновом потоке той или иной формы. Например, ваша модель представления или репозиторий могут выполнять эту работу с помощью сопрограмм Kotlin.

CommonsWare 04.04.2022 19:43

Вместо того, чтобы просто получить первый тег img, есть ли способ получить первый тег img, отвечающий определенным требованиям? Например, тег img с атрибутом alt и полным http или https URL-адресом, который включает формат изображения .jpg, .jpeg или .png?

Tom Darious 04.04.2022 20:12

@TomDarious: См. документация JSoup синтаксис селектора, который я использовал в вызове select().

CommonsWare 04.04.2022 20:22

Другие вопросы по теме