我在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){ }
}
}
答案 0 :(得分:0)
使用User-Agent
,因为请求中没有其他标头,例如Elements musicVideoLink = doc.select("h3.yt-lockup-title a");
,YouTube会返回搜索结果的基本HTML呈现。这与上面链接图像中的结构完全不同,但实际上更容易选择:
User-Agent
这看起来像是最简单的解决方案。如果您确实传递了"scripts": {
"test": "mocha"
},
标题,则会返回与浏览器检查器中显示的“网络”标签相同的内容,但这与该图像中的结果不匹配。浏览器显然会对该响应进行一些AJAX样式处理和渲染。