使用Jsoup解析iframe中的YouTube缩略图

时间:2015-05-28 00:51:59

标签: java android iframe youtube jsoup

我想在我的Android应用中显示此YouTube网址的默认缩略图:

<iframe width="560" height="315" src="https://www.youtube.com/embed/FXx_gbdIUKg" frameborder="0" allowfullscreen=""></iframe>

这是我这样做的方法:

  static String parseThumbnail(String youTubeURL){
        org.jsoup.nodes.Document document = Jsoup.parse(youTubeURL);
        Elements youtubeElements = document.select("FXx_gbdIUKg");
        org.jsoup.nodes.Document iframeDoc =  Jsoup.parse(youtubeElements.get(0).data());
        Elements iframeElements = iframeDoc.select("iframe");
    return iframeElements.attr("http://img.youtube.com/vi/"+youtubeElements+"/default.jpg");

iframe在“content:encoded”节点内,所以我在这里调用这个方法。

String itemYouTubeImage = null;

                 if (XML_TAG_CONTENT_ENCODED.equalsIgnoreCase(tag)) {
                        String contentEncoded = tagNode.getTextContent();
                        itemYouTubeImage = parseThumbnail(contentEncoded);
                        itemImageURL = parseImageFromHTML(contentEncoded);
                        itemContentEncodedText = parseTextFromHTML(contentEncoded);

我该如何正确地做到这一点?

我遇到的一个问题是编译器告诉我从未使用分配给parseThumbnail(contentEncoded)的值itemYouTubeImage

1 个答案:

答案 0 :(得分:0)

如果您只想要默认缩略图,则会在youtube HTML文档的<head>中提供。它没有编码。

<link itemprop="thumbnailUrl" 
    href="https://i.ytimg.com/vi/2qhzsn3pZgk/maxresdefault.jpg">

选择属性值并获取绝对URL:

    String youtubeUrl = "https://www.youtube.com/watch?v=9wpqE8OSWrU";

    Document doc = Jsoup.connect(youtubeUrl).get();

    String thumbnailUrl = doc
            .select("link[itemprop=thumbnailUrl]")
            .first()
            .absUrl("href");

    System.out.println(thumbnailUrl);

<强>输出

    https://i.ytimg.com/vi/9wpqE8OSWrU/maxresdefault.jpg

Jsoup cookbook中阅读更多内容。