我试图通过使用Tampermonkey脚本来做到这一点。但是,我对新方法持开放态度......
我想要做的是从特定的data-video
中提取一些数据(<div>
)。但是,此数据在页面的HTML代码下不可用,但在Dev Tools - &gt;下可用。资源,然后是框架。
任何人都知道是否可以在DevTools下获取该信息?我怎么能这样做?
两页之间的比较可以在这里找到:&#34; Original HTML PAGE&#34;和&#34; HTML PAGE under DevTools&#34;
在第一个超链接上无法看到id=video-canvas
,但它位于<object type="application/x-shockwave-flash
(...)
答案 0 :(得分:2)
正如您在问题中所述,您正在寻找的数据可在“框架”文件夹的“资源”选项卡下的DevTools中找到。您正在查看的是源HTML,类似于View Source。
您想要的代码正在被取代。该网站似乎正在使用JW Player插件,该插件将<div id="video-canvas">
替换为检测到的用于播放视频的设备/浏览器的相应HTML。使用我的Mac上的所有浏览器,他们被迫使用Flash,即使它已被禁用。当使用我的iPhone,它无法播放闪光灯,并检查页面时,它使用JW自己的自定义视频元素。它似乎必须将文件位置存储在内存中,因为它不在生成的标记中。
我可以在开发工具中运行控制台并访问他们的JS类。看来我可以调用jwplayer._tracker
,它有一个对象b
。对象b
有一个对象AlWv3iHmEeOzwBIxOUCPzg
每次我在不同的浏览器之间检查时,这个对象似乎是一致的,你可以在我的第一个例子中使用for循环来获得正确的值,但是将它确定为.b以下该对象为e
,而e
中的对象http://i.n.jwpltx.com/v1....
非常长,似乎包含一个网址,因此需要对其进行解析。
所以要运行HTML字符串
for ( var loc in jwplayer._tracker.b.AlWv3iHmEeOzwBIxOUCPzg.e){
loc
}
所以如果我们把它放在一个函数来解析字符串并返回一个值
function getSubURL(){
var initURL;
for ( var loc in jwplayer._tracker.b.AlWv3iHmEeOzwBIxOUCPzg.e){
initURL = loc;
}
//look for 'mp4:' this is in front of the file path
var start = initURL.indexOf("mp4%3A");
//look for the .mp4 for the end of the file name
var stop = initURL.indexOf(".mp4");
//grab the string between
//start+6 to remove characters used to find it
//and stop+4 to include characters used to find it
var subPath = (initURL.substring((start+6),(stop+4))).split("%2F").join("/");
return subPath;
}
//and run it
getSubURL();
它将返回ciencia/astronomia/fimsol.mp4
你可以从你的控制台运行它,但我不知道你如何在Tamper Monkey中使用它,但我认为它会更接近你想要的。
答案 1 :(得分:1)
这是我用来解决问题的方法......我无法在Dev Tools下获取我想要的代码,但我找到了一种从jwplayer获取数据的方法{ {1}}。这就是我获取每个视频的url文件名的方式:
getPlaylistItem