Давайте изменим подход. Вы уже знаете, что мы ищем URL как https://img-9gag-fun.9cache.com/photo/a2ZG6Yd_460svvp9.webm
(Чтобы получить URL-адрес видео, вы также можете щелкнуть его правой кнопкой мыши в Chrome и выбрать «Копировать видео-адрес»).
Если вы ищете источник страницы, вы найдете a2ZG6Yd_460svvp9.webm
, но он хранится в JSON внутри <script>
.
Это не очень хорошая новость для Jsoup, потому что она не может быть проанализирована, но мы можем использовать простое регулярное выражение, чтобы получить эту ссылку. URL экранирован, поэтому мы должны удалить обратную косую черту. Затем вы можете использовать Jsoup для загрузки файла.
public static void main(String[] args) throws IOException {
Document doc = Jsoup.connect("https://9gag.com/gag/a2ZG6Yd").ignoreContentType(true)
.userAgent("Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:25.0) Gecko/20100101 Firefox/25.0")
.referrer("https://www.facebook.com/").timeout(12000).followRedirects(true).get();
String html = doc.toString();
Pattern p = Pattern.compile("\"vp9Url\":\"([^\"]+?)\"");
Matcher m = p.matcher(html);
if (m.find()) {
String escpaedURL = m.group(1);
String correctUrl = escpaedURL.replaceAll("\\\\", "");
System.out.println(correctUrl);
downloadFile(correctUrl);
}
}
private static void downloadFile(String url) throws IOException {
FileOutputStream out = (new FileOutputStream(new File("C:\\file.webm")));
out.write(Jsoup.connect(url).ignoreContentType(true).execute().bodyAsBytes());
out.close();
}
Также обратите внимание, что vp9Url
не единственный там, так что, возможно, другой будет более подходящим, например h265Url
или webpUrl
.