龙空技术网

Python爬虫自学笔记:爬取某管网站视频及字幕

居家IT男 641

前言:

而今姐妹们对“python字幕”大概比较关心,咱们都想要分析一些“python字幕”的相关资讯。那么小编在网上收集了一些有关“python字幕””的相关内容,希望姐妹们能喜欢,看官们快快来了解一下吧!

1 前言

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

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

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

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

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

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

2 功能及版本说明

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

版本:v1.0

3 开发环境

Python3和PyCharm

4 网站分析

1) 标题信息

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

2) 视频地址

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

3) 字幕地址

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

5 编码思路

1) 提供视频网站地址;

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

3) 请求网站;

4) 爬取标题信息;

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

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

6 代码实现

代码运行效果如下:

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

具体代码如下:

import requestsfrom bs4 import BeautifulSoupimport osimport 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 = ";    # 下载文件夹    path = "E:\\YouTube视频\\Python\\0基础学Python视频教程(Telusko)"    # 下载    video_download(url,path)
7 相关学习知识点

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

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

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

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

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

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

8 结束语

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

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

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

标签: #python字幕