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();
}
}
}
我正在尝试从 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();
}
}
}