Jsoup 没有完全获取原始 html 代码

Jsoup doesn't fully fetch the raw html code

我正在尝试从 genius.com 获取一些歌词(我知道他们有一个 api.I 正在手动执行。)但我似乎没有得到相同的 html 字符串everytime.In 事实上,我将下面的代码放在一个 for 循环中,它似乎只有 %50 的时间有效。

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;

public class Fetch_lyrics {
    public static void testing() {
        try {

            String urll = "https://genius.com/In-mourning-debris-lyrics";;
            Document doc = Jsoup.connect(urll).maxBodySize(0).get();
            String text = doc.select("p").first().toString();
            System.out.println(text);

        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

我通过 doc 变量打印了原始 html,似乎大约 50% 的时间原始 html 字符串没有 <p> class (idk 如果它被称为 class 或其他东西)提前包含 lyrics.Thanks。

看起来 genius.com returns 适合新用户的不同内容。第一次来和浏览器清除cookies(Chrome)再去的时候得到了两种不同的内容

我建议您添加两个选择器以获取您需要的信息。

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

import java.io.IOException;

class Outer {

    public static void main(String[] args) {
        try {
            String urll = "https://genius.com/In-mourning-debris-lyrics";
            Document doc = Jsoup.connect(urll).maxBodySize(0).get();
            Element first = doc.selectFirst("p");
            if (first == null) {
                first = doc.selectFirst("div[class^=Lyrics__Container]");
            }
            if (first != null) {
                System.out.println(first.text());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}