Как получить последние 5 статей с веб-сайта с помощью Jsoup

В настоящее время я работаю над настольным Java-приложением для компании, и они просят меня извлечь 5 последних статей с веб-страницы и отобразить их в приложении. Для этого мне, конечно, нужен синтаксический анализатор HTML, и я думал непосредственно о JSoup. Но моя проблема в том, как мне это сделать? Я нашел один простой пример из этого вопроса: Пример: как «просканировать» веб-сайт (или страницу) в поисках информации и добавить ее в мою программу?

с этим кодом:

package com.stackoverflow.q2835505;

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class Test {

    public static void main(String[] args) throws Exception {
        String url = "https://stackoverflow.com/questions/2835505";
        Document document = Jsoup.connect(url).get();

        String question = document.select("#question .post-text").text();
        System.out.println("Question: " + question);

        Elements answerers = document.select("#answers .user-details a");
        for (Element answerer : answerers) {
            System.out.println("Answerer: " + answerer.text());
        }
    }

}

этот код был написан BalusC, и я это понимаю, но как мне это сделать, если ссылки не зафиксированы, что, например, имеет место в большинстве газет. Для простоты, как я могу извлечь, например, 5 последних статей с этой страницы новостей: Новости? Я не могу использовать RSS-канал, так как мой босс хочет, чтобы статьи отображались полностью.

Можете ли вы попробовать по ссылке хакерские новости? кстати, что за ошибка вы получаете?

Gauthaman Sahadevan 29.03.2018 07:55

Прокрутите до ссылки RSS и используйте RSS. Фактически, я должен опубликовать это как ответ. Да, и здесь - это мировая лента.

Elliott Frisch 29.03.2018 07:55

Спасибо Gauthaman и Elliot, но я уже думал об этом, и моему начальнику не нужен RSS-канал, он хочет, чтобы все 5 статей были завершены, а не в качестве предварительного просмотра, как это отображается в RSS-потоках.

Laz22434 29.03.2018 08:33
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
3
433
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Для начала нужно скачать главную страницу:

    Document doc = Jsoup.connect("https://globalnews.ca/world/").get();

Затем вы выбираете интересующие вас ссылки например с селекторы css Вы выбираете все теги a, которые содержат href с текстом globalnews и вложены в тег h3 с классом story-h. URL-адреса находятся в атрибуте href тега a.

    for(Element e: doc.select("h3.story-h > a[href*=globalnews]")) {
        System.out.println(e.attr("href"));
    }

Затем полученные URL-адреса вы можете обрабатывать по своему усмотрению. Вы можете загрузить содержимое первых пяти из них, используя синтаксис из первой строки и т. д.

Большое спасибо, вот что я искал Лука !!

Laz22434 30.03.2018 15:58

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