python实现从youtube自动下载视频

版权声明:本文为博主原创文章,未经允许也可以任意转载。http://huyouxiao.com https://blog.csdn.net/fudaxing/article/details/88532578

关注微信公众号(瓠悠笑软件部落),一起学习,一起摸鱼
huyouxiao.com

story

youtube是一个很好的视频网站,上面有很多学习的视频。我想把自己感兴趣的视频下载下来。

steps

自己 python 还没有入门,不敢保证能够做出来,先分析下自己想要的程序是什么样子: 我想在命令行运行脚本,输入要搜寻的关键字,找到对应的视频列表,获取对应的播放地址,然后请求另外一个网站將地址转换成视频下载的地址,接着下载视频报错到本地.

思路

# 从命令行参数读取关键字
# 请求youtube网站,得到结果页面
# 找到视频列表,提取视频地址放入List中
# 遍历List,请求youtube download online 转换网站,得到转换结果页面
       # 在转换结果页面提取下载视频的链接
       # 请求链接,保存下载的视频

本来想用qdownloader 在线转换,然后在结果页面抓取下载地址,实际操练发现老是报SSL的错误,这个网站又不支持http. 倒腾了一下放弃了。

偷懒搜了一下,发现有现有的模块支持。参考这里. 安装下module,然后运行,偶尔也会报SSL的错,不过还是可以工作的。

#! /usr/bin/python3
# youtubeAutoSave.py  use for search media on youtube and download it automatically 

import requests, sys, webbrowser, bs4, urllib
from pytube import YouTube

mediaUrl = 'http://www.youtube.com/watch?v=HtSuA80QTyo&list=PLxZdKEtmy3GRhETjatYq9v3O8VVt3YrNb&index=1'  #你要下载的视频列表中的一个视频,代码会根据他找到页面,然后找到列表里面的所有下载地址。

print('seart searching mediaUrl: ' + mediaUrl)  
res = requests.get(mediaUrl)
res.raise_for_status()

# Retrieve top search result links.
soup = bs4.BeautifulSoup(res.text, "lxml")
#print(res.text)

# Open a browser tab for each result.
# spf-link  playlist-video clearfix  yt-uix-sessionlink      spf-link 
linkElems = soup.select('.spf-link.playlist-video.clearfix.yt-uix-sessionlink.spf-link')
#print(linkElems)
sumOpen = len(linkElems)
allLines = []
for i in range(sumOpen):
    itemUrl = 'http://www.youtube.com/' + linkElems[i].get('href')
    allLines.append(itemUrl)
print(allLines)
for i in range(len(allLines)):
    YouTube(allLines[i]).streams.first().download('/home/huxing/my-repo/PythonLearn/youtube')

猜你喜欢

转载自blog.csdn.net/fudaxing/article/details/88532578