java - 在某些网站上无法使用 jSoup 找到 OpenGraph 标签

标签 java html jsoup meta-tags facebook-opengraph

我正在尝试从网站中提取 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/

相关文章:

java - 记录 HttpRequest 参数和请求正文

java - 最好的选择。在 Java 应用程序中使用 .Net Dll

java - 从小程序调用 dll 方法

javascript - JQuery UI Datepicker - 如何在鼠标悬停时突出显示所选日期之前/之后的天数?

java - 使用 JSoup 从表中提取数据

java - Glassfish 4 - 无法登录管理控制台

javascript - Autoprefixer 在 Gulpfile.js 中不起作用

html - 在浏览器调整大小时调整 div

java - Jsoup获取标签的值(value)

performance - 一种估计或预测一段 HTML 的 Jsoup 处理时间的方法?