gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 06:24:14 26 4
gpt4 key购买 nike

我从 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com