我实际上不确定它是否尝试流式传输视频,只需要比正常时间长几秒来解析YouTube页面。
我正在寻找一个随机的Youtube视频页面来查看它是否已被删除,我希望确保除视频本身之外的所有内容都已加载。我有以下代码可以工作,只是它需要一段时间才能完成(我假设视频开始加载,这会减慢它,但没有测试确认虽然)
import requests, bs4
url = 'https://www.youtube.com/watch?v=XYZ'
parameters = {'magic_var' : 'no_load'}
r = requests.get(url, params=parameters)
soup = bs4.BeautifulSoup(r.content)
我的问题是,我是否可以设置某种参数以确保视频无法立即开始在页面请求中加载。
答案 0 :(得分:1)
您的浏览器会在加载页面(以及页面引用的Flash播放器)后,在单独的请求中流式传输视频。视频不是页面数据本身的一部分。样式,脚本和图像都不是;它们都是HTML页面中编码的引用,供浏览器解释。
只是请求页面本身不会启动正在流式传输的视频,不会。
换句话说,所有requests.get()
将加载的是您的浏览器也加载的基本HTML标记。除非您再解释该HTML标记并开始加载页面中引用的资源,否则您不会自动开始加载任何其他内容。
答案 1 :(得分:1)
如何使用网络分析仪并查看视频的来源? 到目前为止,我了解所有视频都来自一个主机名: 例如:
s.ytimg.com/yt/swfbin/watch_as3.swf?video_id=YOUR_VIDEO_ID&autoplay=1
和autoplay
将为1 - 开始播放或0。
如果video_id
不再存在,您会在屏幕上看到类似Invalid parameters
的内容。