Взаимодействовать с веб-сайтом, созданным с помощью Knockout. js in Android Kotlin - PullRequest
0 голосов
/ 07 апреля 2020

Моя цель - взаимодействовать с веб-сайтом (не моим), получать и публиковать данные с него в моем приложении Android, закодированном с использованием Kotlin. Интерактивная часть должна выполняться в фоновом режиме, а результат должен отображаться в RecyclerView в моем приложении.

На данном веб-сайте используется Knockout. js - скорость отклика и динамическое изменение данных делают невозможным использование таких библиотек, как Jsoup, для моей цели.

Я начинающий разработчик приложений (n00b), и у меня есть вопрос для более старших разработчиков: мой проект невозможен? Я читал, что это «сложно» взаимодействовать с динамическим c веб-сайтом, и я также слышал, что это невозможно. Это? Если нет, не могли бы вы привести меня к библиотекам, которые я должен использовать ? Это нормально, если они в Java, я мог бы, вероятно, посмотреть на адаптацию их к Kotlin.

1 Ответ

1 голос
/ 22 апреля 2020

Если сайт, из которого вам нужно извлечь данные, дает предсказуемый результат, когда вы делаете запрос к URL-адресу, тогда будет легко извлечь из него нужные вам данные, используя библиотеку, подобную Jsoup, о которой вы упомянули. Глядя на документы Jsoup, это будет что-то вроде:

Document doc = Jsoup.connect("https://en.wikipedia.org/").get();
log(doc.title());
Elements newsHeadlines = doc.select("#mp-itn b a");
for (Element headline : newsHeadlines) {
  log("%s\n\t%s", 
    headline.attr("title"), headline.absUrl("href"));
}

Где doc.select ссылается на идентификатор в данном div (или другом элементе), содержимое которого вы хотите извлечь.

Использует ли сайт нокаут или другую JS библиотеку, чтобы помочь ему визуализировать контент, не должно иметь никакого значения, так как все, что вы делаете, это анализирует строковое содержимое запроса - в основном то, что вы видите, когда просматриваете источник в своем браузере. , Knockout или любой другой скрипт уже запустится, выполняя свою работу при рендеринге финального HTML, который вы собираетесь анализировать с Jsoup.

Но выполнение всего этого довольно нерегулярно, как указывает @Gushan так как обычно, если вы не выполняете какой-то скучный тип деятельности, который был бы странным для приложения android, сайт, который хочет предоставить вам данные и от которого вы хотите получать данные, будет предоставлять API (обычно какой-то REST API), который упростит (документирует), как go получить эти данные. Но я думаю, что вещи не всегда такие. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...