使用jsoup刮掉youtube href

时间:2018-05-17 07:10:25

标签: java jsoup

我在java中使用jsoup,我正试图在特定的YouTube视频搜索中抓取第一个href。但是,为了获得href,我无法弄清楚正确的css查询。如果有人可以指出我正确的方向,那就太棒了。 Here is the image of the html I'm trying to scrape on youtube.

以下是我尝试过的选项之一,但不打印任何内容。

我的代码:

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.io.IOException;

public class WebTest
{
    public static void main(String[] args)
    {
        try {
            Document doc = Jsoup.connect("https://www.youtube.com/results?search_query=childish+gambino+this+is+america").get();
            Elements musicVideoLink = doc.select("h3.title-and-badge.style-scope.ytd-video-renderer a[href]");

            String linkh = musicVideoLink.attr("href");
            System.out.println(linkh);
        }
        catch (IOException ex){ }
    }
}

1 个答案:

答案 0 :(得分:0)

使用User-Agent,因为请求中没有其他标头,例如Elements musicVideoLink = doc.select("h3.yt-lockup-title a"); ,YouTube会返回搜索结果的基本HTML呈现。这与上面链接图像中的结构完全不同,但实际上更容易选择:

User-Agent

这看起来像是最简单的解决方案。如果您确实传递了"scripts": { "test": "mocha" },标题,则会返回与浏览器检查器中显示的“网络”标签相同的内容,但这与该图像中的结果不匹配。浏览器显然会对该响应进行一些AJAX样式处理和渲染。