问题描述
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”。找到它之后:
..然后,您需要尝试重新创建标头,请求正文(因为它不为空),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);