使用 jsoup 从头部解析 json
Parse json from head with jsoup
我想从这个 url 中获取 json 例如“https://www.imdb.com/title/tt9598834/”
这是代码:
暂停乐趣 getRealRating(imdbCode: String): String = suspendCoroutine { cont ->
val url = "https://www.imdb.com/title/tt9598834/"
var document: Document? = null
try {
document = Jsoup.connect(url).get()
} catch (e: IOException) {
e.printStackTrace()
}
cont.resume("")
}
我可以看到
document.head().allElements[0]
包含
script type="application/ld+json"
具有 json 电影数据。我怎样才能得到这个 json 作为字符串?
您可以执行以下操作(Java 不是 Kotlin,但应该差别不大):
Document doc = Jsoup.connect(url).get();
// In this case you want the first script tag
Element e = doc.select("script").first();
String s = e.html();
System.out.println(s);
我得到的部分输出:
{"@context":"https://schema.org","@type":"Movie","url":"/title/tt9598834/","name":"The Xrossing","image":
如果你有多个这样的元素,你可以使用-
Elements el = doc.select("script[type=application/ld+json]");
然后遍历结果:
for (Element e : el) {
System.out.println(x.html());
}
我想从这个 url 中获取 json 例如“https://www.imdb.com/title/tt9598834/”
这是代码: 暂停乐趣 getRealRating(imdbCode: String): String = suspendCoroutine { cont ->
val url = "https://www.imdb.com/title/tt9598834/"
var document: Document? = null
try {
document = Jsoup.connect(url).get()
} catch (e: IOException) {
e.printStackTrace()
}
cont.resume("")
}
我可以看到
document.head().allElements[0]
包含
script type="application/ld+json"
具有 json 电影数据。我怎样才能得到这个 json 作为字符串?
您可以执行以下操作(Java 不是 Kotlin,但应该差别不大):
Document doc = Jsoup.connect(url).get();
// In this case you want the first script tag
Element e = doc.select("script").first();
String s = e.html();
System.out.println(s);
我得到的部分输出:
{"@context":"https://schema.org","@type":"Movie","url":"/title/tt9598834/","name":"The Xrossing","image":
如果你有多个这样的元素,你可以使用-
Elements el = doc.select("script[type=application/ld+json]");
然后遍历结果:
for (Element e : el) {
System.out.println(x.html());
}