java - 如何查找网页的所有元素(仅加载 25 个而不是全部)

标签 java web-scraping jsoup

我从 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());
        }
    }
}

最佳答案

如果您使用 wget 检索该页面或curl ,您将看到该页面中实际上只包含 26 条引号。您在使用浏览器时看到的其余引号是使用 Javascript 动态加载的。

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

关于java - 如何查找网页的所有元素(仅加载 25 个而不是全部),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55805745/

相关文章:

java - 找不到扫描仪方法的符号错误

python - 使用 Python/PhantomJS/Selenium 滚动无限页面

python - Scrapy网站爬虫返回无效路径错误

java - 如何从网页的 HTML 中获取绝对 URL

java - 我如何解析单个变量中保存的每个字符串

java - 如何使用Jsoup爬取单个网站?

java - 如何构造一个需要从构造函数传入值的方法?

java - Thread.sleep(xx) 但整个程序都 hibernate 了?

java - 2037-10-18 巴西利亚夏令时过渡

python - 无法创建循环来从网页获取所有标题