【发布时间】:2020-08-26 00:32:02
【问题描述】:
我正在尝试从给定的网站 URL 查找并下载 m3u8 文件。我该怎么做?我查看了页面源代码,找不到任何指向任何 m3u8 文件的链接,但我可以看到正在发送网络 GET 请求以在 Chrome 的开发工具网络选项卡中下载 m3u8 文件。
那么有谁知道如何从给定的网站 URL 中检测链接到 m3u8 文件的 URL 以及如何下载它?
【问题讨论】:
标签: python web-scraping m3u8
我正在尝试从给定的网站 URL 查找并下载 m3u8 文件。我该怎么做?我查看了页面源代码,找不到任何指向任何 m3u8 文件的链接,但我可以看到正在发送网络 GET 请求以在 Chrome 的开发工具网络选项卡中下载 m3u8 文件。
那么有谁知道如何从给定的网站 URL 中检测链接到 m3u8 文件的 URL 以及如何下载它?
【问题讨论】:
标签: python web-scraping m3u8
.m3u8 和 .mpd 链接是特殊元素,不是 HTML 的一部分。
您可以在网络请求中找到它们,通常它们会在您单击视频上的播放按钮后出现。它们用于分段流式传输内容,而不是让您访问视频文件。
这是我用 Selenium 使用了一段时间的 sn-p 来检索它们。它不适用于 100% 的情况,但它仍然适用于许多网站:
JS_get_network_requests = "var performance = window.performance || window.msPerformance || window.webkitPerformance || {}; var network = performance.getEntries() || {}; return network;"
network_requests = driver.execute_script(JS_get_network_requests)
for n in network_requests:
if ".m3u8" in n["name"]:
print(n["name"])
附:如果视频嵌入在 iframe 中,则必须切换到 iframe 才能从视频中获取网络请求。
【讨论】: