python爬虫脚本下载YouTube视频
python爬虫脚本下载YouTube视频
工作环境:
python 2.7.13
pip
lxml, 安装 pip install lxml,主要用xpath查找节点,可以使用re模块代替
pytube, 安装 pip install pytube
***工具
参考:
源码:
- # coding: utf-8
- __author__ = "zwzhou"
- __date__ = "2017-03-19"
- import urllib2
- from pytube import YouTube
- from pprint import pprint
- from lxml import etree
- import sys,getopt
- def getHtml(url):
- user_agent='Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1284.0 Safari/537.13'
- headers={'User-Agent':user_agent}
- request=urllib2.Request(url,headers=headers)
- response=urllib2.urlopen(request)
- html=response.read()
- return html
- def getUrl(html):
- global savepath
- global maxNumber
- global timeThreshold
- global cur_count
- global videoLists
- tree=etree.HTML(html)
- urllist=tree.xpath(u'//div[@class="thumb-wrapper"]/a/@href')
- #print urllist
- urllist_time=tree.xpath(u'//div[@class="thumb-wrapper"]/a/span/span/text()')
- baseurl=r'https://www.youtube.com'
- for (item_name,item_length) in zip(urllist,urllist_time):
- #print item_name
- #print item_length
- try:
- yt = YouTube(baseurl+item_name)
- except:
- print "Some thing wrong about the authority"
- print("video name:"+yt.filename)
- print("video time:"+item_length)
- if yt.filename in videoLists: # 文件已经存在
- print "This video has been downloaded!"
- else:
- if checktime(item_length):
- video = yt.filter('mp4')[-1]
- print("Now is loading %s------------>"%yt.filename)
- video.download(savepath)
- print("--------------->%sVideo is loaded!"%yt.filename)
- cur_count+=1
- videoLists.append(yt.filename)
- if cur_count >= maxNumber:# 达到要求
- print('There are %d videos downloaded!This task is completed!'%maxNumber)
- # TODO: if necessary, the videoLists can be logged
- sys.exit()
- else:
- print 'This video is too long and it will not be downloaded, just be ignored!'
- if urllist:
- getUrl(baseurl+urllist[0]) #下一个页面
- def checktime(timelength):
- global timeThreshold
- strs=timelength.split(':')
- time =int(strs[0])*60+int(strs[1])
- if time< timeThreshold:
- return True
- else:
- return False
- def usage():
- print '''
- usage: python dl_youtube [option] [arg]
- options and args:
- -s : download path
- -t : time threshold of the video to be loaded, in seconds
- -u : start url which to be crawled, it can be set more than one time
- -n : when downloading is stop, i.e. how many videos will be downloaded, default is 10000.
- -h : print this help message
- '''
- if __name__ == "__main__":
- start_urls=['https://www.youtube.com/watch?v=TThzH_sJo6o']
- videoLists=[] # 保存文件名,防止重复下载
- # 初始值
- savepath=r"D://MyDownloads"
- maxNumber=10000
- timeThreshold=240
- cur_count=0
- opts,args=getopt.getopt(sys.argv[1:],'hs:t:n:u:')
- for op,value in opts:
- if op == "-s": # 下载路径,如默认 D://MyDownloads
- savepath=value
- elif op == '-t': # 时常限制,默认240s
- timeThreshold =int(value)
- elif op == "-h": # help
- usage()
- sys.exit()
- elif op == '-n':
- maxNumber=int(value)
- elif op == '-u': # 初始的搜索链接
- start_urls.append(value)
- for item in start_urls:
- html = getHtml(item)
- getUrl(html)
使用
- python dl_youtube.py -n 10 -s D://MyDownloads -t 600 -u https://www.youtube.com/watch?v=TThzH_sJo6o
将从页面 https://www.youtube.com/watch?v=TThzH_sJo6o 开始搜索下载10段时长小于6分钟的video保存到D://MyDownloads文件夹中。
python爬虫脚本下载YouTube视频的更多相关文章
- 使用python+ffmpeg+youtube-dl下载youtube上的视频
一.准备工作 1.安装python,详见https://www.cnblogs.com/cnwuchao/p/10562416.html 2.安装ffmpeg,详见https://www.cnblog ...
- python爬虫之下载文件的方式总结以及程序实例
python爬虫之下载文件的方式以及下载实例 目录 第一种方法:urlretrieve方法下载 第二种方法:request download 第三种方法:视频文件.大型文件下载 实战演示 第一种方法: ...
- Mac电脑如何快速下载YouTube视频
如果你想下载一些教育类的视频资源,或者是一些学习的教程,那么YouTube是一个很好的视频资源平台.YouTube上面各种各样的资源都有,而且质量都很有保证,尤其是那些订阅量很多的人.可惜的是,You ...
- 使用在线工具下载YouTube视频
YouTube上面有数不尽的视频资源,很多人都想从上面下载自己喜欢的视频,但是不得其法.那么,究竟怎样从YouTube上面下载视频呢?其实,一点也不难.只要你在Google上面搜索free youtu ...
- 安卓手机下载YouTube视频的3种方法
作为全球最大的在线视频网站,YouTube上面的内容可真是应有尽有啊,从教学视频到个人手工艺品制作流程,从各种搞笑视频到电视连续集等等,包罗万象.如果你想下载YouTube视频到电脑上面的话,网上有很 ...
- Python:使用youtube-dl+ffmpeg+FQ软件下载youtube视频
声明:本文所述内容都是从http://blog.csdn.net/u011475134/article/details/71023612博文中学习而来. 背景: 一同学想通过FQ软件下载一些youtu ...
- python下载youtube视频
谷歌开源了一个新的数据集,BoundingBox,(网址在这里)这个数据集是经过人工标注的视频数据集,自然想将它尽快地运用在实际之中,那么首先需要将其下载下来:可以看到网址上给出的是csv文件,该文件 ...
- Python 爬虫——抖音App视频抓包
APP抓包 前面我们了解了一些关于 Python 爬虫的知识,不过都是基于 PC 端浏览器网页中的内容进行爬取.现在手机 App 用的越来越多,而且很多也没有网页端,比如抖音就没有网页版,那么上面的视 ...
- Python 爬虫批量下载美剧 from 人人影视 HR-HDTV
本人比較喜欢看美剧.尤其喜欢人人影视上HR-HDTV 的 1024 分辨率的高清双字美剧,这里写了一个脚本来批量获得指定美剧的全部 HR-HDTV 的 ed2k下载链接.并依照先后顺序写入到文本文件, ...
随机推荐
- JavaCSV之读CSV文件
Java在进行数据处理,有时候难免有进行CSV文件的操作,这里采用了JavaCSV读CSV文件. 1.准备工作 (1)第三方包库下载地址:https://sourceforge.net/project ...
- acceptorThreadCount
Apache Tomcat 7 Configuration Reference (7.0.92) - The HTTP Connector https://tomcat.apache.org/tomc ...
- 利用burpsuite实现重放攻击
1.什么是重放攻击? 顾名思义,重复的会话请求就是重放攻击.可能是因为用户重复发起请求,也可能是因为请求被攻击者获取,然后重新发给服务器. 附上详细的解释:http://blog.csdn.net/k ...
- Python开发【Django】:Model操作(一)
Django ORM基本配置 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去 ...
- XShell已经内置rz 直接从Windows拖文件进去终端
XShell已经内置rz 直接从Windows拖文件进去终端 http://www.jb51.net/LINUXjishu/163820.html 借助securtCRT,使用linux命令sz可以很 ...
- 跟我学Makefile(三)
紧接着跟我学Makefile(二)继续学习:变量高级用法 (1)变量值的替换 :替换变量中的共有的部分,其格式是“$(var:a=b)”或是“${var:a=b}”,把变量“var”中所有以“a”字串 ...
- Virtualbox中win7虚拟机中U盘不可用问题的解决
Virtualbox版本是5.0.0,主机运行多是Ubuntu12.04 LTS,虚拟机是Win7 X64.起初Win7正常运行,Virtualbox的增强功能已安装.下面是如何一步一步解决U盘不可用 ...
- 如何使用iClap创建普通批注
iClap是一款以产品管理为基础的企业协同办公软件,其中智能批注为其产品管理的核心工具,我们可以以图片,文字和视频的形式创建批注.本文为大家介绍的是如何在iClap上创建普通批注(图片,文字形式). ...
- 大喜python版opencv3发布,demo脚本抢鲜版发布
大喜,python版opencv3发布 zwPython3的升级也可以启动了,一直在等这个,zwPython会直接升级到版本3:zwPython3 zwPython3采用64位python3,支持op ...
- ZW网络团队及资源简介
ZW网络团队及资源简介 ZW网络推广团队,是国内首个教父级网络营销团队,自1997年以来,先后参与操盘多个重大互联网项目,服务过超过150家国际500强客户,是微软公司首家官方认证的网络公关服务商,新 ...