当前位置: 首页 > 后端技术 > Python

Python一键下载视频脚本分享

时间:2023-03-26 16:57:27 Python

原文https://lwebapp.com/zh/post/p...需求小编平时会去腾讯视频、优酷等一些专业的视频网站看影视系列。这些网站的好处是可以缓存视频,可以在地铁等上下班途中愉快的看剧,因为地铁上的网速通常不是很好。但是有一些经典的电影或者电视剧,这些视频是没有提供的,所以我们只能在一些小电影网站上看,资源是有的,但是问题来了,这些小电影网站大多没有视频下载功能,所以在地铁上看不了。如果能把这些视频下载下来,传到手机里,能不能离线看呢?接下来小编就来演示如何使用python脚本实现一键下载小电影网站的视频。以下脚本可以学习pythonselenium使用pythonrequests使用slice下载视频存储本地实时输出视频下载进度更多编程知识可以去lwebapp.com学习注意:这里的脚本主要用于测试和学习用途,请勿用于制作环境等商业用途,建议大家访问官方指定平台或专业视频网站支持正版解决方案。小编以我经常看的在线之家为例。这个网站可以找到很多美剧资源。首先我们用谷歌浏览器打开一个视频地址,比如https://www.zxzj.fun/video/1529-1-1.html,按F12或者右键“检查”打开浏览器控制台,然后点击Control选择平台最左边的元素按钮,或者按Ctrl+Shift+C,选择网页的视频区域,可以看到video标签可以发现src属性的值是视频链接,而且是一个单独的.mp4视频地址,这个地址原则上可以直接从浏览器下载,直接复制这个地址在浏览器中打开,就可以右键-点击下载。然而,电视剧通常有很多集。每次都要手动打开网页——打开控制台——复制视频地址——然后打开视频——最后下载视频,非常繁琐。这时候脚本就派上用场了。这个过程可以自动化,可以简化重复操作的过程。脚本整体思路是使用selenium打开网页通过selenium元素选择器找到video标签所在的iframe,切换到iframe并使用video标签获取视频地址,然后请求需要拼接的视频内容通过下载视频存入本地代码#!/usr/bin/python#-*-coding:UTF-8-*-#Firstreleaselwebapp.comimportrequests#Google浏览器驱动fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.uiimportWebDriverWaitfromselenium.webdriver.supportimportexpected_conditionsasEC#sleepmodule,让程序停止运行fromtimeimportsleep#SetGooglebrowserdriver=webdriver.Chrome()#手动修改你要下载视频的网页URLislocated='https://www.zxzj.fun/video/1529-1-1.html'#打开网页driver.get(url)try:#通过元素选择器找到iframeiframe=WebDriverWait(driver,10).until(EC.presence_of_element_located((By.CSS_SELECTOR,'#playleftiframe')))except:driver.quit()#获取网页标题,这样可以看到当前下载视频的标题title=driver.find_elements(By.TAG_NAME,'title')[0].get_attribute('innerHTML')#切换到iframedriver.switch_to.frame(iframe)#get通过视频标签获取视频地址video=driver.find_elements(By.TAG_NAME,'video')[0]video_url=video.get_attribute('src')print('video',video_url)#已经获取到视频地址,可以关闭浏览器驱动。quit()#设置请求头信息headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/96.0.4664.110Safari/537.36Edg/96.0.1054.62'}#请求视频内容video_content=requests.get(video_url,headers=headers,stream=True)print("开始下载")#视频大小contentLength=int(video_content.headers['content-length'])line='size:%.2fMB'#大小转换line=line%(contentLength/1024/1024)#打印视频总长度print(line)#存储下载的长度downSize=0print('video_name',title)#分片下载withopen(title+'.mp4',"wb")asmp4:forchunkinvideo_content.iter_content(chunk_size=1024*1024):ifchunk:mp4.write(chunk)#记录下载视频的长度,实时输出下载进度downSize+=len(chunk)打印('程序ress:{:.2%}'.format(downSize/contentLength),end='\r')print("下载结束")总结以上简单展示了使用python请求和selenium库下载一个mp4视频,可以作为学习案例还有很多地方需要改进。每次运行脚本只能解析下载一个视频。或许可以改进一下,批量解析一个视频列表进行下载,修改视频地址进行下载。需要手动更改源码的url地址,可以改进做一个界面交互让用户输入视频url解析,目前只适配特定网站,不支持其他url,可以改进为不同网站提供单独的解析功能进行匹配,以后有空再分享更多有趣实用的python脚本。参考Python一键下载视频脚本分享如何安装pip|win10/python3Selenium+Python自动化测试(一)pythonrequests下载大文件\_Python3使用requests2.x下载大文件python3爬虫(四)各种网站视频下载方法