【问题标题】:How to get video src with jsoup (twitch)?如何使用 jsoup (twitch) 获取视频 src?
【发布时间】:2021-02-16 14:04:44
【问题描述】:

我得到的是空指针,可以得到这个链接吗?

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>

链接:https://www.twitch.tv/scream/clip/BrightOilyAppleMcaT

【问题讨论】:

  • 请提供您要抓取的网址。没有这些信息是不可能的。

标签: java html jsoup


【解决方案1】:

看起来这个又需要很多工作才能解开。

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

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

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

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

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

这是另一项如此庞大的工作,我不会开始尝试为你做这件事。

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

【讨论】:

  • 没想到这么难吧
  • 我正确理解jsoup不适合手头的任务?告诉我,除了 twitch api,还有哪些值得用的工具?
  • Spring 提供RestTemplate 用于发出请求。例如。 ResponseEntity&lt;String&gt; document = restTemplate.getForEntity(url, String.class); String json = document.getBody(); 会得到你的 json 作为字符串。您可以创建对象表示并简单地更改类型,或者您可以使用 jackson、gson、jayway json 路径解析 json,完全取决于您
【解决方案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);

【讨论】:

    猜你喜欢
    • 2018-03-25
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多