如何使用 jsoup (twitch) 获取视频 src?

How to get video src with jsoup (twitch)?

我得到空指针,可以得到这个link吗?

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/40487770748-offset-9048.mp4?token=%7B%22authorization%22:%7B%22forbidden%22:false,%22reason%22:%22%22%7D,%22chansub%22:%7B%22restricted_bitrates%22:%5B%5D%7D,%22device_id%22:%226518a1542e035018%22,%22expires%22:1609419047,%22https_required%22:true,%22privileged%22:false,%22user_id%22:500437676,%22version%22:2,%22vod_id%22:850278065%7D&amp;sig=5e17731db577b99e535c4aad3eacc70c0cc34521"></video>

link: https://www.twitch.tv/scream/clip/BrightOilyAppleMcaT


您可以更改 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);

看来这个又需要了,要拆开需要做很多工作。

以下是我快速浏览后可以告诉您的内容:

当您发出初始请求时,它不包含您在 HTML 中查找的结果。因此,它必须来自后续的 HTTP 请求,该请求在页面加载后被触发......即 javascript 与后端服务器通信以获得 JSON 有效负载。在其中一个有效负载中,您会找到“.mp4”。

如果您使用 Chrome 开发者工具,您可以快速转到“网络”选项卡,单击第一个请求之后的每个请求,然后选中“预览”选项卡。您会发现一些请求包含 JSON 响应,其他请求只是 .css、.png 等。请忽略这些。在 JSON 响应中,检查结果中是否出现了您感兴趣的某些通用值,例如“.mp4”。找到后:

..然后您需要尝试重新创建 headers、请求 body(因为它不为空)、HTTP 请求类型 (POST),然后通过任何相关的 cookie(在 headers)。

您将不得不发出 1 到 5 个 HTTP 请求来获取您需要的内容以获得此 JSON 有效负载。一旦你有了它,你就可以解析它。

这是另一项非常重要的工作,我不会开始尝试为您完成。

如果是我来做这项工作,我会查看 Twitch API 文档 https://dev.twitch.tv/docs/api/ 看看是否有 better/easier 方法,它只是 1-2 个请求。