Как избежать сбоя приложения при разборе HTML с помощью jsoup? - PullRequest
0 голосов
/ 20 сентября 2018

Я пытаюсь извлечь некоторый контент (ссылки, изображения и т. Д.) С веб-страницы новостей и добавить их в свое приложение.Я использую библиотеку jsoup для разбора.Вот пример кода, относящегося к анализу данных.В целом код работает нормально, но, поскольку все запросы выполняются по некоторым ключевым словам, приложение может аварийно завершить работу при изменении связанных ключевых слов в html.Например, я хочу, чтобы приложение пропускало извлечение ссылки, если jsoup не может подключиться к веб-сайту или если соответствующие атрибуты не совпадают;и искать других.Итак, как я могу избежать сбоев приложения из-за jsoup?Есть ли лучший способ извлечь данные из новостной веб-страницы?

    try {
        // Connect to the related page
        Document relatedNewsPage = Jsoup.connect(link)
            .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
             .referrer("http://www.google.com")
             .get();

             // Parse the news' title, imagelink and update time
             String title = relatedNewsPage.selectFirst("meta[property=og:title]").attr("content") ;
             String imageLink = relatedNewsPage.selectFirst("meta[property=og:image]").absUrl("content");
             String updateTime = relatedNewsPage.selectFirst("meta[property=article:modified_time]").attr("content");

             // check whether all the links and title are valid
             if (Patterns.WEB_URL.matcher(link).matches() &&
                 Patterns.WEB_URL.matcher(imageLink).matches() &&
                 !TextUtils.isEmpty(title)) {

              // add the news to the list
              news.add(new NewsItem( getContext().getResources().getString(R.string.source_ntv),
                   link,
                   title,
                   imageLink,
                   updateTime));
             }
       } catch (IOException e) {
            Log.e(LOG_TAG, "Problem parsing the Relatad News' url result", e);
    }
  }
}
...