如何使用js在网页中提取所有当前视频文件及其地址?

时间:2016-11-02 11:55:35

标签: javascript dom web-scraping

.../jobs/manager-position-telco-44

它可以提取网页上的所有图像 如何使用js在网页中提取后缀为flv的所有flv文件,如 var imgs=document.images.length; ?不是我本地目录中的所有flv文件,而是网页。
firefox中的插件sample.flv可以获取当前的mp4文件 enter image description here 为什么我的js代码不能执行相同的任务?

Video DownloadHelper

enter image description here

如何使用js(例如firefox中的插件var Links = document.querySelectorAll('a[href$=".mp4"]'); console.log(Links); )提取当前视频文件?

4 个答案:

答案 0 :(得分:15)

Yahoo Movies使用blob流传输视频数据。在任何地方都没有直接的mp4/flv链接,也不能直接获得此类链接。 src标记的<video>引用了一个blob流链接:

<video class="yvp-html5-video" preload="" id="2413371376" src="blob:https://www.yahoo.com/1dfafd99-a1ff-4cc8-bcff-255e69db9977"></video>

当您从Video DownloadHelper下载MP4时,该插件实际上会读取blob流并将其写入MP4文件中的磁盘。它不下载MP4文件。如果您尝试Copy URL,则会在剪贴板中显示以下内容:

https://roarack01.vpg.cdn.yimg.com/yahoomovies/61fb473f-04a2-381e-b2ae-9496dfba5e66_VYtMtix1DscECbXMT9tHT7yf2P9BZF-mRCMjBejFgALFHl7NSm1ZXPOMICAOr949v2xUgEASYLw-_1_0_vtt.m3u8?a=yahoomovies&ib=sapi&m=application%2fvnd.apple.mpegurl&mr=0&ns=c+i+ci+cii&vid=61fb473f-04a2-381e-b2ae-9496dfba5e66&x=1479599999&s=370695a7063b6aae06fb7f537c85773a

您可以录制blob流,但这不是一件容易的事。

有关视频blob流的更多详细信息,请查看以下链接:

What is blob in the <video src=blob:url>?

Export HTML5 blob video to MP4

W3C Media Source Extensions

A URL for Blob and File reference

答案 1 :(得分:2)

如果我理解正确,您希望查找具有关联.flv的所有链接。

如果您需要此功能,可以使用querySelectorAll并使用css选择器$=选择以.flv结尾的所有链接。

var flvLinks = document.querySelectorAll('a[href$=".flv"]');

答案 2 :(得分:0)

要获取目录的所有flv文件,请尝试以下代码 -

var files = fs.readdirSync("YOUR_DIRECTORY");
var path = require('path');

for(var i in files) {
   if(path.extname(files[i]) === ".flv") {
       //do your desired task here
   }
}

希望它有所帮助.. :)

答案 3 :(得分:0)

您可以检查Chrome上的所有视频请求 - &gt; “媒体”子选项卡中的“网络”选项卡。