如何使用 Jsoup 为 'tagname' 的元素列表解析 HTML 文档?
How to parse an HTML document for an element list of 'tagname' using Jsoup?
我在使用 Jsoup 解析 HTML 页面的长标记名时一直存在问题。
就我而言,我正在尝试从 YouTube 搜索页面中提取 <ytd-video-renderer>
元素。不管我尝试了多少种方法。不可靠,或 non-empty,返回列表。
到目前为止我已经尝试过的事情,每个都针对 HTML 文档 object doc
.
.select("ytd-video-renderer")
(无果,列表为空。)
.getElementsByClass("ytd-item-section-renderer")
(一个class只出现在ytd-video-renderer
)
.select("ytd-video-renderer.ytd-item-section-renderer")
.select("ytd-video-renderer[class*=ytd-item-section-renderer]")
.select("div#dismissable)
(ytd-video-renderer
下唯一的div)
还有更多参数...
我也尝试了其他标签,但我遇到了同样的问题。
我最接近成功的是:.select(a[href*=watch])
。这returns 所有视频标题。但遗憾的是还有一些与其他文本的其他链接。因此不可靠。
我安装了 Java 8 和最新版本的 Jsoup。
这是实现 Jsoup 的代码:
public class SearchPage {
private Document doc;
public SearchPage(String url){
try {
doc = Jsoup.connect(url).get();
} catch (IOException ex) {
//taking care of my error cats
}
}
public Elements test(){ //just to test
return doc.getElementsByTag("ytd-item-renderer");
}
}
我尝试提取的示例:
An image of HTML blocks that I'm looking for
好像我错过了很多人说 Jsoup 很棒而且简单的东西......(不是我的情况:v)
我想看到的是列表中我要求的每个元素。接下来我想再次解析每个元素,但让我们先解决这个问题。希望这能给我解决其余问题的诀窍。现在我每次都得到一个空列表。
非常感谢。
您正在查看的 Youtube 搜索页面的内容是由您的浏览器通过 Javascript 呈现的。 Jsoup.connect(url).get()
行只会获取页面的HTML内容,不会执行任何Javascript。如果您使用 cURL 或其他一些命令行工具请求页面,您会发现您要查找的元素不存在。
我不确定你的目标是什么,但你可能想看看 YouTube API 看看是否有更简单的方法来做你想做的事。
我在使用 Jsoup 解析 HTML 页面的长标记名时一直存在问题。
就我而言,我正在尝试从 YouTube 搜索页面中提取 <ytd-video-renderer>
元素。不管我尝试了多少种方法。不可靠,或 non-empty,返回列表。
到目前为止我已经尝试过的事情,每个都针对 HTML 文档 object doc
.
.select("ytd-video-renderer")
(无果,列表为空。)
.getElementsByClass("ytd-item-section-renderer")
(一个class只出现在ytd-video-renderer
)
.select("ytd-video-renderer.ytd-item-section-renderer")
.select("ytd-video-renderer[class*=ytd-item-section-renderer]")
.select("div#dismissable)
(ytd-video-renderer
下唯一的div)
还有更多参数...
我也尝试了其他标签,但我遇到了同样的问题。
我最接近成功的是:.select(a[href*=watch])
。这returns 所有视频标题。但遗憾的是还有一些与其他文本的其他链接。因此不可靠。
我安装了 Java 8 和最新版本的 Jsoup。
这是实现 Jsoup 的代码:
public class SearchPage {
private Document doc;
public SearchPage(String url){
try {
doc = Jsoup.connect(url).get();
} catch (IOException ex) {
//taking care of my error cats
}
}
public Elements test(){ //just to test
return doc.getElementsByTag("ytd-item-renderer");
}
}
我尝试提取的示例: An image of HTML blocks that I'm looking for
好像我错过了很多人说 Jsoup 很棒而且简单的东西......(不是我的情况:v)
我想看到的是列表中我要求的每个元素。接下来我想再次解析每个元素,但让我们先解决这个问题。希望这能给我解决其余问题的诀窍。现在我每次都得到一个空列表。
非常感谢。
您正在查看的 Youtube 搜索页面的内容是由您的浏览器通过 Javascript 呈现的。 Jsoup.connect(url).get()
行只会获取页面的HTML内容,不会执行任何Javascript。如果您使用 cURL 或其他一些命令行工具请求页面,您会发现您要查找的元素不存在。
我不确定你的目标是什么,但你可能想看看 YouTube API 看看是否有更简单的方法来做你想做的事。