使用 jsoup 从站点 url 提取 YouTube 视频 url
Extract a youtube video url from a site url using jsoup
我让这段代码在同一个网站上工作,但他们改变了主题,现在我正在苦苦挣扎。 我在获取 YouTube 视频的 url 时做错了什么? 这是我的方法。该站点的示例 link 是 http://kabumbu.co.tz/mahojiano-na-masau-bwire/
Element video = doc.select("div.single-archive iframe").first() ;
videourl = video.attr("src");
到目前为止代码是正确的,但我只是错误地从视频 url 中提取了视频 ID。使用此方法有效
public static String extractVideoId(String ytUrl) {
String vId = null;
Pattern pattern = Pattern.compile(".*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*");
Matcher matcher = pattern.matcher(ytUrl);
if (matcher.matches()){
vId = matcher.group(1);
}
return vId;
}
或者,这是一个仅使用 Jsoup 的解决方案:
/**
*
* /!\ Exceptions raised by this method are NOT logged. /!\
*
* @param youtubeUrl
* @return videoId or null if an exception occured
*
*/
public static String extractVideoId(String youtubeUrl) {
String videoId = null;
try {
Document videoPage = Jsoup.connect(youtubeUrl).get();
Element videoIdMeta = videoPage.select("div[itemtype=http://schema.org/VideoObject] meta[itemprop=videoId]").first();
if (videoIdMeta == null) {
throw new IOException("Unable to find videoId in HTML content.");
}
videoId = videoIdMeta.attr("content");
} catch (Exception e) {
e.printStackTrace(); // alternatively you may log this exception...
}
return videoId;
}
最好的方法是
code =youtubeUrl.substring(youtubeUrl.length() - 11);
我让这段代码在同一个网站上工作,但他们改变了主题,现在我正在苦苦挣扎。 我在获取 YouTube 视频的 url 时做错了什么? 这是我的方法。该站点的示例 link 是 http://kabumbu.co.tz/mahojiano-na-masau-bwire/
Element video = doc.select("div.single-archive iframe").first() ;
videourl = video.attr("src");
到目前为止代码是正确的,但我只是错误地从视频 url 中提取了视频 ID。使用此方法有效
public static String extractVideoId(String ytUrl) {
String vId = null;
Pattern pattern = Pattern.compile(".*(?:youtu.be\/|v\/|u\/\w\/|embed\/|watch\?v=)([^#\&\?]*).*");
Matcher matcher = pattern.matcher(ytUrl);
if (matcher.matches()){
vId = matcher.group(1);
}
return vId;
}
或者,这是一个仅使用 Jsoup 的解决方案:
/**
*
* /!\ Exceptions raised by this method are NOT logged. /!\
*
* @param youtubeUrl
* @return videoId or null if an exception occured
*
*/
public static String extractVideoId(String youtubeUrl) {
String videoId = null;
try {
Document videoPage = Jsoup.connect(youtubeUrl).get();
Element videoIdMeta = videoPage.select("div[itemtype=http://schema.org/VideoObject] meta[itemprop=videoId]").first();
if (videoIdMeta == null) {
throw new IOException("Unable to find videoId in HTML content.");
}
videoId = videoIdMeta.attr("content");
} catch (Exception e) {
e.printStackTrace(); // alternatively you may log this exception...
}
return videoId;
}
最好的方法是
code =youtubeUrl.substring(youtubeUrl.length() - 11);