下载xxx视频[python]
接上节:Fiddler的使用[抓包] https://blog.csdn.net/GreatXiang888/article/details/103509817
代码:点这里
分析Request和返回值
从上节第9小点,得知 Request Headers:
GET /api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276&tz=-8&from=000news&idl=32&idlr=32&modifyed=false&url=http://tv.cctv.com/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml&tsp=1576137212&vn=1540&vc=C8167DFA99A01887A7BD7B8C54EF6F4C&uid=785BC95C310710E1FCA8DDA7F5A48902 HTTP/1.1
其中,pid=3554ca638eed43a7bcbaf259101cb276,
同时,它的Host为vdn.apps.cntv.cn
,
所以浏览器通过get方式访问http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=3554ca638eed43a7bcbaf259101cb276
,
之后拿到的数据就是第10小点。
{“ack”:“yes”,“status”:“001”,“tag”:“北京 世界5G大会 项目”,“title”:"[新闻直播间]北京 世界5G大会闭幕 80个项目正式签约",“play_channel”:“CCTV 新闻频道”,“produce”:"",“editer_name”:“zhoujieyi”,“produce_id”:“wxsb01”,“column”:“新闻直播间精切169”,“f_pgmtime”:“2019-11-23 10:31:29”,“cdn_info”:{“cdn_vip”:“vod.cntv.lxdns.com”,“cdn_code”:“VOD-MP4-CDN-CNC”,“cdn_name”:“3rd网宿”},“video”:{“totalLength”:“95.00”,“lowChapters”:[{“duration”:“95”,“image”:“http://p5.img.cctvpic.com/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264200000nero_aac16.mp4”}],“chapters”:[{“duration”:“95”,“image”:“http://p5.img.cctvpic.com/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264418000nero_aac32.mp4”}],“chapters2”:[{“duration”:“95”,“image”:“http://p5.img.cctvpic.com/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h264818000nero_aac32.mp4”}],“chapters3”:[{“duration”:“95”,“image”:“http://p5.img.cctvpic.com/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2641200000nero_aac16.mp4”}],“chapters4”:[{“duration”:“95”,“image”:“http://p5.img.cctvpic.com/fmspic/2019/11/23/3554ca638eed43a7bcbaf259101cb276-53.jpg”,“url”:“http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4”}],“validChapterNum”:5,“url”:""},“hls_cdn_info”:{“cdn_vip”:“newcntv.qcloudcdn.com”,“cdn_code”:“VOD-HLS-CDN-QQNEW”,“cdn_name”:“3rd腾讯云-新”},“hls_url”:“http://newcntv.qcloudcdn.com/asp/hls/main/0303000a/3/default/3554ca638eed43a7bcbaf259101cb276/main.m3u8?maxbr=2048”,“asp_error_code”:“0”,“manifest”:{“audio_mp3”: “http://newcntv.qcloudcdn.com/asp/audio/3/5/5/4/3554ca638eed43a7bcbaf259101cb276/mp3/main.m3u8”},“client_sid”:“3pmUncxlLXx2UtnIePF7mFRfnM+CSn1x3+dz8YEtk7A=”,“public”:“1”,“is_invalid_copyright”:“0”,“is_protected”:“0”,“is_fn_hot”:“true”,“is_p2p_use”:false,“default_stream”:“chapters3”,“lc”:{“isp_code”:“5”,“city_code”:"",“provice_code”:“BJ”,“country_code”:“CN”,“ip”:“115.27.194.97”},“is_ipad_support”:“true”,“version”:“0.2”,“embed”:"",“is_fn_multi_stream”:false}
标黄色的就是我们想要的链接。
获取pid
1,先把python包安装好,能导入正常即可。
import requests, re, json, os
from urllib.parse import urlencode
from urllib.request import urlretrieve
import pprint
import re
2,分析pid位置
在http://tv.cctv.com/2019/11/23/VIDEzEc0GomMhqbJubVXXSKy191123.shtml
页面中,按下Ctrl+U,查看源代码。
按下Ctrl+F,粘贴pid值,找到对应第5个。
3,写代码
用正则表达式将其提取出来。
def getPid(url):#url为该页面的网址return_text = requests.get(url).textsearchObj = re.findall(r'<!--repaste.video.code.begin-->(.+?)<!--repaste.video.code.end-->', return_text)return searchObj[0]
获取下载视频链接
1,分析
从 分析Request和返回值 可以看到,如果res为返回值,则res['video']['chapters4'][0]['url']
为对应视频链接:http://vod.cntv.lxdns.com/flash/mp4video63/TMS/2019/11/23/3554ca638eed43a7bcbaf259101cb276_h2642000000nero_aac16.mp4
2,写代码
def getVideInfo(pid):#pid为该页面视频对应的pid#pid 从页面中的源代码找到,在<!--repaste.video.code.begin-->和<!--repaste.video.code.end-->之间url = "http://vdn.apps.cntv.cn/api/getHttpVideoInfo.do?pid=" + pidres = requests.get(url).textres = json.loads(res)title = res['title']video_url = res['video']['chapters4'][0]['url']return title,video_url
保存到本地
直接写代码
def saveVideo(url):pid = getPid(url)title,video_url = getVideInfo(pid)urlretrieve(video_url, title+".mp4")print("完成保存!")
效果
文件夹中会添加一个视频文件。
可以打开:
xxx
视频讲解
(录得不好,前几次没经验)
链接:https://pan.baidu.com/s/1BvV8mgQCGrHgQvUx7rL-mg 提取码:w9od
下载xxx视频[python]相关推荐
- 下载美拍视频 python
下载美拍视频 获取用户ID 通过网页端搜索用户,获取用户ID 获取页面中的视频地址 获取到用户ID后,通过地址https://www.meipai.com/user/userid,访问.在返回的htm ...
- python官网下载步骤视频-Python 实现视频下载
最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站 ...
- python视频下载自动提取视频封面,上传七牛云并写入Mysql数据库(一)
有时候需要下载一些视频上传到数据库,网上很多抓取的方式用起来都不是很方便,自己写了一个能够用的抓取视频的脚本,并且自动提取视频封面,上传到七牛云,最后按照规则写到数据库.大大提高了工作效率. pip需 ...
- python怎么执行程序_小鹅通视频怎么下载?用python实现小鹅通视频下载(二)
小鹅通视频怎么下载?用python实现小鹅通视频下载(二) 背景 上次分享<小鹅通视频怎么下载?用python实现小鹅通视频下载(一)[1]>后,引来了很多人咨询小鹅通视频怎么下载的问题. ...
- python批量下载b站_python 批量下载bilibili视频的gui程序
运行效果: 完整代码: # !/usr/bin/python # -*- coding:utf-8 -*- # time: 2019/07/02--08:12 __author__ = 'Henry' ...
- python批量下载bilibili视频_如何批量下载bilibili的视频?
貌似现在 you-get 已经支持批量下载了.通过下面命令就可以批量下载了 you-get --playlist 网址 本来是带这个需求来的,看到 Venchi 的答案,装了 Python3 之后发现 ...
- python爬app西瓜视频_Python爬虫下载西瓜视频
Python爬虫下载西瓜视频 1.简介 由于西瓜视频免费,全站视频都可以下载,需要指定详情的视频链接,默认720P,电影内存1G多 2.Python 清单文件 requests==2.21.0 lxm ...
- 利用Python you-get 下载网页视频
平时可以使用python 下 you-get 命令 下载一些视频. 如果还没有python,请先安装 python 然后 ,如果是windows 下 ,先打开 cmd 命令行, 输入 pip inst ...
- 宝藏下载神器,python一键下载B站视频
B站无疑是一个宝藏地带,作为一个宝藏(老)男孩,请自行忽略(老)字,B站,一个学习的天堂,请一定珍惜,好好使用!作为吃灰党资深成员,一些的好的视频无疑需要进收藏夹吃灰,相信各位好机油肯定收藏了不少小姐 ...
- 利用python you-get库下载网络视频、音乐及图片
Python,让繁琐工作高效便捷:利用python you-get库单个.批量下载网络视频.音乐及图片,you-get命令需要在cmd窗口中运行. 很多人学习python,不知道从何学起. 很多人学习 ...
最新文章
- Delphi XE5 常用功具与下载
- Codeforces 1198 1199
- 操作系统二:计算机内存体系
- Django学习笔记10
- Spring在3.1版本后的bean获取方法的改变
- c+ +三角函数_C ++中的三角函数
- 执行Linux脚本出错,出现No Such file or directory异常
- 大数据可视化技术的挑战及应对
- 非常经典的java编程题全集-共50题(11-30)
- DLL注入——使用全局钩子
- cachecloud:安装部署(一)
- 如图GX Works2所示我该如何操作?
- linux的图形界面的管理
- 直方图中bins应如何理解及处理
- oracle pga的作用,ORACLE PGA 的调整
- C语言/C++常见习题问答集锦(五十二) 之职工信息管理系统
- 说说twitter(一)
- 【字节跳动面试题】赛马问题 64匹马8个跑道最少几次赛出最快的4匹马
- jmeter高分辨率适配 + 参数栏正常显示
- Java遍历JsonObject对象