如何使用jsoup获取视频src?

问题描述

我正在获取空指针,可以获取链接吗?

Element element = document.select("div.tw-absolute.tw-bottom-0.tw-left-0.tw-overflow-hidden.tw-right-0.tw-top-0.video-player__container").first();
System.out.println(element.absUrl("src"));

也尝试过

空指针

Element video = document.select("video").first();
String absSrc = video.absUrl("src");
System.out.println(absSrc);

html部分

<div class = "tw-absolute tw-bottom-0 tw-left-0 tw-overflow-hidden tw-right-0 tw-top-0 video-player__container" data-test-selector="video-player__video-container">
                <video playsinline webkit-playsinline src="https://clips-media-assets2.twitch.tv/AT-cm%7C916104911.mp4\">
                </video>

解决方法

看起来像这样的人将需要再次进行大量的工作才能取消选择。

以下是我可以告诉您的内容:

发出初始请求时,它不包含您在HTML中寻找的结果。因此,它必须来自页面加载后触发的后续HTTP请求...即,有JavaScript与后端服务器进行通信以获取JSON负载。在这些有效负载之一中,您会找到“ .mp4”。

如果您使用Chrome开发人员工具,则可以跳至“网络”标签,在第一个请求之后单击每个请求,然后选中“预览”标签。您会发现一些请求包含JSON响应,其他请求只是.css,.png等。忽略这些请求。在JSON响应中,检查结果是否存在您感兴趣的通用值,例如“ .mp4”。找到它之后:

enter image description here

..然后,您需要尝试重新创建标头,请求正文(因为它不为空),HTTP请求(POST)的类型,并传递任何相关的cookie(在标头中)。

您将必须发出1到5个HTTP请求之间的任意位置,以获取获取此JSON负载所需的内容。拥有后,您可以将其解析回去。

这是另一个很大的工作,我不会开始尝试为您做这件事。

如果是我在做这项工作,请查看Twitch API文档https://dev.twitch.tv/docs/api/,看看是否有一种更好/更简便的方式,即只有1-2个请求。

,

您可以按以下方式更改CSS查询。

Element element = document.select("div.tw-absolute.tw-bottom-0.tw-left-0.tw-overflow-hidden.tw-right-0.tw-top-0.video-player__container > video").first();
String src = element.attr("src");
System.out.println(src);