如何用Python网页抓取下载带controlslist="nodownload"的视频?
如何下载带有
controlslist="nodownload"属性的视频 核心结论
controlslist="nodownload"只是隐藏了视频播放器的下载按钮,完全可以下载这类视频,以下是具体解决方法,同时解决你遇到的「Bad URL hash」问题:
方法1:修复并直接使用src链接
你遇到的「Bad URL hash」是HTML编码导致的链接错误,解决步骤:
- 复制video标签里的
src属性值,将所有&替换为&(这是HTML对&的转义编码) - 补充链接缺失的后缀:原链接中的
n.?是解析错误,改为n.mp4?(Facebook视频通常以mp4为后缀) - 将修正后的链接粘贴到新浏览器标签页,右键选择「另存为」即可下载。
修正后的示例链接(基于你提供的src):
https://video-fra3-1.xx.fbcdn.net/v/t42.1790-2/307608880_755324925546967_7278828413698270618_n.mp4?_nc_cat=106&ccb=1-7&_nc_sid=cf96c8&_nc_ohc=2s1fEESN7NUAX_El4Hb&_nc_oc=AQmgHTnQH8pGCmL7kHQnvHKKzkDFJc-6kTQazbteeA1cA21gUhBHplAVKoQmgAfQa2n1lKhOdkZlAXTbObUQycEp&_nc_ht=video-fra3-1.xx&oh=00_AfAOYW5RS8PEp52dlofPE3OtHjgd2SM0dxvk-dhnBIK8BQ&oe=63D18E33
方法2:用浏览器开发者工具抓真实请求链接
如果修正后的链接仍无法访问,直接抓取页面实际加载的视频链接:
- 打开目标页面,按
F12启动开发者工具 - 切换到「网络」面板,刷新页面
- 在筛选栏输入
video,找到类型为「video/mp4」的请求 - 右键该请求,选择「复制链接地址」,粘贴到新标签页即可下载。
方法3:移除controlslist属性恢复下载按钮
直接修改页面元素显示原生下载按钮:
- 打开开发者工具的「元素」面板,定位到对应的
<video>标签 - 删除
controlslist="nodownload"属性,或修改为controlslist="download" - 页面视频播放器会立即显示下载按钮,点击即可下载。
内容的提问来源于stack exchange,提问作者Lordcode
相关产品推荐
相关产品推荐

