Как найти все элементы веб-страницы (вместо всех загружается только 25) - PullRequest
0 голосов
/ 23 апреля 2019

Я получаю все кавычки из https://www.brainyquote.com/authors/oscar_wilde и добавляю текст каждого элемента в список типа String, и все работает как надо. Моя проблема в том, что он не захватывает каждый элемент с сайта. Это только заканчивает тем, что захватил 25 каждый раз. Я проверил это, загрузив кавычки и распечатав размер списка, что дает 25. Есть ли способ загрузить каждый элемент с помощью jsoup, чтобы я мог получить все кавычки?

Это соответствующий класс. Как я уже сказал, все работает как надо. Единственная проблема - захват всех кавычек вместо 25. Примечание: игнорируйте тот факт, что я начинаю индекс с 21, то же самое происходит, когда я начинаю его с 0.

package com.galanjulio.pequitas.quotes;

import com.galanjulio.pequitas.Pequitas;
import lombok.Getter;
import lombok.Setter;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class QuoteHandler {

    private Document document;

    private List<String> quotes;

    @Getter
    @Setter
    private int index;

    public QuoteHandler() {
        try {
            document = Jsoup.connect("https://www.brainyquote.com/authors/oscar_wilde").get();
        } catch (IOException e) {
            e.printStackTrace();
        }

        index = 21;
        quotes = new ArrayList<>();

        loadQuotes();
    }

    public String getNextQuote() {
        index++;

        if (index >= quotes.size()) {
            index = 0;
        }

        Pequitas.getInstance().saveSettings();

        return quotes.get(index);
    }

    private void loadQuotes() {
        List<Element> elements = document.getElementsByClass("b-qt");

        for (Element element : elements) {
            quotes.add(element.text());
        }
    }
}

1 Ответ

0 голосов
/ 23 апреля 2019

Если вы извлечете эту страницу, используя wget или curl , вы увидите, что на самом деле на странице есть только 26 цитат.Остальные цитаты, которые вы видите при использовании браузера, загружаются динамически с использованием Javascript.

$ curl -s https://www.brainyquote.com/authors/oscar_wilde | grep b-qt | wc -l
26
...