gpt4 book ai didi

java - 如何使用 Jsoup 解析 HTML 文档中的 'tagname' 元素列表?

转载 作者:太空宇宙 更新时间:2023-11-04 09:45:21 25 4
gpt4 key购买 nike

我在使用 Jsoup 解析 HTML 页面中的长标记名时一直遇到问题。就我而言,我正在尝试提取 <ytd-video-renderer> YouTube 搜索页面中的元素。不管怎样,我尝试了很多方法。没有返回可靠的或非空的列表。

到目前为止我已经尝试过的事情,每一个都针对 HTML Document 对象 doc .

.select("ytd-video-renderer") (无济于事,列表为空。)

.getElementsByClass("ytd-item-section-renderer") (仅出现在 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]) 。这将返回所有视频标题。但遗憾的是还有一些其他文本的链接。因此不可靠。

我安装了 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看看是否有更简单的方法来完成您想要的操作。

关于java - 如何使用 Jsoup 解析 HTML 文档中的 'tagname' 元素列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55483932/

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