1 前言

最近在某网站上找了一些学习的视频教程,已经在陆续的分享给大家了,下面先简单说一下我的视频下载历程。

首先是搜索想要的教程视频,这个很简单啊,各种检索,找到了好多关于的教程,从中选择了一个比较不错的系列教程开始学习,对没有基础的也能看得懂。

遇到的困难是视频只可以在线看,官网不支持下载,且没有字幕(视频是英文的。。。)。然后又是各种搜索,发现另一个神奇的网站可以解析这个网站的视频网址。然后,各位都懂得,解析后的网址中有视频下载地址。还有个意外的小惊喜,那就是还有字幕可以下载,突然感觉这个网站好强大,我喜欢!

视频和字幕下载下来以后呢,就是合成了,这个就不细说了,找个视频编辑软件就可以实现了。

这里说了一堆废话了,可以忽略……

还有一个需要说明的是,这个视频网址是需要特殊方法才能访问的,一般情况下访问不了,懂得朋友可以露出会心一笑哈!这里主要介绍一下用来实现视频和字幕的下载,仅供学习参考用,不能访问的朋友可以去别的视频网站练练手哈。

2 功能及版本说明

功能:主要实现了视频和字幕的下载。

版本:v1.0

3 开发环境

4 网站分析

1) 标题信息

字幕代码_开源字幕制作软件_字幕网站源码

由上图可以看出,标题信息在标签中,通过命令soup.h3.text提取标题信息。

2) 视频地址

开源字幕制作软件_字幕代码_字幕网站源码

字幕代码_开源字幕制作软件_字幕网站源码

如上图,选择下载高质量的视频,标签中href属性包含视频的下载地址,可以通过soup.xxx.a.get('href')来获取。

3) 字幕地址

字幕代码_开源字幕制作软件_字幕网站源码

字幕代码_开源字幕制作软件_字幕网站源码

如上图,简体中文的字幕下载地址信息在标签的value属性中,通过soup.xxx.input.get('value')来获取。

5 编码思路

1) 提供视频网站地址;

2) 根据地址信息,整合成可实现视频解析的网站地址;

3) 请求网站;

4) 爬取标题信息;

5) 爬取视频下载地址,并实现下载;

6) 爬取字幕下载地址,并实现下载;

6 代码实现

字幕代码_开源字幕制作软件_字幕网站源码

字幕网站源码_字幕代码_开源字幕制作软件

开源字幕制作软件_字幕网站源码_字幕代码

代码运行效果如下:

字幕网站源码_字幕代码_开源字幕制作软件

字幕网站源码_字幕代码_开源字幕制作软件

好吧,写到这里贴图的时候发现下载文件的名称忘命名了……这里图片就不改了,在下面的具体代码中已更改添加了。

具体代码如下:

import requests
from bs4 import BeautifulSoup
import os
import time
# 请求网站,返回页面处理结果
def get_html(url):
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
    try:
        r = requests.get(url,headers)
        r.raise_for_status()
        soup = BeautifulSoup(r.text, "html.parser")
        return soup
    except:
        return ""
# mp4下载
def mp4_download(soup, path,title):
    video_link = soup.tbody.tr.find_all("td")[2].a.get("href")
    # print(video_link)
    headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
    r = requests.get(video_link,headers)
    with open(path + "\" + title + ".mp4","wb") as f:
        f.write(r.content)
    print(path + "  视频完成下载")
# srt下载
def srt_download(soup, path,title):
    srt_link = soup.find_all("tbody")[1].tr.find_all("td")[1].input.get("value")
    # print(srt_link)
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.132 Safari/537.36"}
    r = requests.get(srt_link, headers)
    with open(path + "\" + title + ".srt", "w",encoding="utf-8") as f:
        f.write(r.text)
    print(path + "  字幕完成下载")
# 实现视频和字幕下载
def video_download(url, path):
    url_find = url[:12] + "add" + url[12:]
    # 请求网站,若访问网站失败,继续请求
    soup = get_html(url_find)
    while soup == "":
        print("请求网站失败")
        time.sleep(10)
        soup = get_html(url_find)
    # 提取video名称
    title = soup.h3.text.replace("|", "")
    # print(title)
    # 设置本地下载地址
    path = path + "\" + title
    if not os.path.exists(path):
        os.makedirs(path)
    # 下载video及字幕
    mp4_download(soup, path,title)
    srt_download(soup, path,title)
if __name__ == '__main__':
    # 下载video网站地址
    url = "https://www.youtube.com/watch?v=PqFKRqpHrjw&list=PLsyeobzWxl7poL9JTVyndKe62ieoN-MZ3&index=22"
    # 下载文件夹
    path = "E:\YouTube视频\Python\0基础学Python视频教程(Telusko)"
    # 下载
    video_download(url,path)

7 相关学习知识点

1) 函数的定义,此次代码将各行命令整合到各个函数中,便于以后编写其他代码时可以调用;

2) 字符串的提取、添加、替换等命令;

3) 网站访问失败进行循环请求;

4) open()函数,实现下载功能;

5) 本地文件夹的创建os.();

6) 最主要的还是库的请求和库的页面解析。

8 结束语

本次代码实现了视频和字幕的下载功能,此次代码仅仅实现了单一视频和字幕的下载,后面会完善优化代码,实现多个或系列视频和字幕的下载。

有了爬虫后,就不用自己一个个手动去点下载视频,选择下载到本地的地址,再去点下载字幕,选择下载到本地的地址,只需输入视频网址即可。对于懒人的我来说,懒是我学习爬虫的动力,哈哈!

将此次编码的过程及源码分享给大家,供大家参考。对于错误的地方,或有更好的建议,希望大家指出来,不胜感激!

———END———
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,永久会员只需109元,全站资源免费下载 点击查看详情
站 长 微 信: nanadh666

声明:1、本内容转载于网络,版权归原作者所有!2、本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。3、本内容若侵犯到你的版权利益,请联系我们,会尽快给予删除处理!