我正在尝试从网站中提取 OpenGraph 元数据以向用户显示预览。我正在使用 jSoup,特别是,我在提取图像 url 时遇到问题。对于我测试过的一些(或大多数,实际上)网站,下面的代码工作得很好,但少数给我带来了问题。最突出的是YouTube。例如: 在 Chrome 中为此页面使用“检查元素”时: https://www.youtube.com/watch?v=AskAQwOBvhc 我的代码返回 null,而经过检查我希望找到 这个:
"//s.ytimg.com/yts/img/youtube_logo_stacked-vfl225ZTx.png"
从页眉中的以下行开始:
<meta property="og:image" content="//s.ytimg.com/yts/img/youtube_logo_stacked-vfl225ZTx.png">
但是我的代码返回 null,这与测试许多其他网站时不同,例如: http://www.bbc.com/culture/story/20150304-is-house-of-cards-worth-watching 我在哪里找到所需的 URL。
Document document = null;
try {
document = Jsoup.connect(Url).get();
} catch (IOException e) {
e.printStackTrace();
}
String ogImage = null;
Elements metaOgImage = document.select("meta[property=og:image]");
if (metaOgImage!=null) {
ogDescription = metaOgImage.first().attr("content");
}
我还尝试迭代元素,看看我想要的标签是否不是第一个。我不太熟悉 HTML 和 Web 技术,但我倾向于相信这两个网站之间存在一些我未能识别的明显差异。
最佳答案
如果可以有更多的metaOgImage试试这个:
Elements metaOgImage = doc.getElementsByTag("meta");
for(Element og : metaOgImage){
if((og.attr("property").toString()).equalsIgnoreCase("og:image")){
ogDescription = og.attr("content").toString();
}
}
关于java - 在某些网站上无法使用 jSoup 找到 OpenGraph 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28853226/