Как получить текст из определенной href с помощью jsoup?

#java #android

#java #Android

Вопрос:

Я получаю текст из http://m.wol.jw.org/en/wol/dt/r1/lp-e/2014/6/26 через jsoup в моем приложении для Android. Это выглядит так:

 public static void refreshFromNetwork(Context context) {
    Document document;
    Elements dateElement;
    Elements textElement;
    Elements commentElement;
    try {
        Calendar calendar = Calendar.getInstance();
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH)   1;
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        sDayURL = sURL   "/"   year   "/"   month   "/"   day;

        document = Jsoup.connect(sDayURL).get();
        if (document.hasText()) {
            dateElement = document.select(".ss");
            textElement = document.select(".sa");
            commentElement = document.select(".sb");

            sDate = dateElement.text();
            sText = textElement.text();
            sComment = commentElement.html();
            sSavedForCheckingDate = sLocalDate;
            savePrefs(context);
            sDayURL = null;
        } else {
            Toast.makeText(mContext,
                    mContext.getString(R.string.warning_unstable_connection),
                    Toast.LENGTH_SHORT).show();
        }
    } catch (IOException e) {
        System.out.println("error");
        e.printStackTrace();
    }
}
 

Но в тексте есть несколько href. Когда курсор находится на них, появляется текстовый фрейм.
Я не могу публиковать изображения, поэтому посмотрите его там: http://habrastorage.org/files/45e/b09/17f/45eb0917f3644bbd9e5ea2b79d98363d.png

Но когда я пытаюсь получить текст из этого href (я получаю его из sComment с помощью html), он возвращает мне весь текст (который отображается, когда я нажимаю на href), а не его часть, как во всплывающем окне. Я не веб-разработчик, поэтому я не понимаю, как получить только нужный текст. Как я могу это сделать?

Ответ №1:

Следуйте приведенному ниже снимку, чтобы получить только текст во всплывающем окне

Щелкните всплывающий href

Смотрите текст всплывающий текст также на этой странице, чтобы извлечь только текст, отображаемый во всплывающем окне, просто используйте этот класс и отобразите содержимое

Когда вы нажимаете на ссылку href, открывается новая страница с тем же текстом с красным шрифтом, это текст, который вам нужен, поскольку это всплывающий текст, теперь вам нужно просто использовать

 String Href=Scomment.attr("href");
Document doc=Jsoup.connect(Href).get();
Element element= doc.getElementById("p101");
String dialogtext=element.text();
 

Это решение вашего вопроса.
Надеюсь, это поможет вам

Комментарии:

1. Спасибо, но я вижу, что у каждого werb есть этот класс. Итак, когда я пишу документ document; Элементы elements; try { sDayURL = » m.wol.jw.org/en/wol/bc/r1/lp-e/1102014007/91/0 «; document = Jsoup.connect(sDayURL).get(); if (document.hasText()) { элементы = document.select(«.sz»); System.out.println(элементы.text()); } } catch (исключение IOException e) { System.out.println(«ошибка»); e.printStackTrace(); } Он возвращает мне весь текст

2. Нет метода getElementByClass, только getElementsByClass . Строка Href = » m.wol.jw.org/en/wol/bc/r1/lp-e/1102014007/91/0 «; Документ doc = Jsoup.connect(Href).get(); Элементы element = doc.getElementsByClass(«sz»); Строка dialogtext = element.text(); System.out.println(dialogtext); И он также возвращает весь текст

3. используйте getElementById(«p101»); он вернет только текст с идентификатором «p101»

4. Ох… Но как мне узнать, какой идентификатор будет использоваться в другом случае?

5. вы можете найти его на странице по элементу inpect, см. Изображение, которое я отправил вам в моем ответе. вы можете найти там <div id=»p101″> используйте идентификатор текста, который вы хотите извлечь.

Ответ №2:

Используйте sComment = commentElement.text(); вместо этого.

Комментарии:

1. Мне нужен текст, который всплывает, а не заголовок ссылки

2. String relHref = commentElement.attr(«href»); используя этот метод attr, вы должны сначала получить URL ссылки, а затем этот relHref снова пройти через Jsoup.connect(relHref).get() и извлечь из этого то, что вы хотите. Надеюсь, это поможет вам

3. Ммм… Я сделал именно это, но он возвращает весь текст, а не тот, который отображается во всплывающем окне

4. Весь текст, включая тот, который отображается во всплывающем окне?

5. Смотрите, когда я нажимаю на href, отображается вся глава. Когда я даю эту ссылку для jsoup, она также получает всю главу. Мне нужна часть главы, которая отображается во всплывающем окне.