欢迎加入Python学习交流QQ群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 !

最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容。如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站上,增加自己的人气,岂不美哉?

parker就是这样一个项目(项目地址:https://github.com/LiuRoy/parker),它采用celery框架定时爬取用户视频列表,将最新发布的视频通过you-get异步下载,可以很方便地实现分布式部署。因为各个网站的页面布局和接口更新比较频繁,为了保证程序的高可用,特意增加了Statsd监控,方便及时发现出错。

代码架构

目前parker中只实现了B站和秒拍的下载,从框架图可以看出,针对每一类网站,需要实现两个异步接口:从用户视频主页解析发布视频的播放地址、根据播放地址下载视频。因此增加网站类型,不需要修改原来的代码,只需要添加新的解析和下载接口即可。针对视频下载完成之后的后续操作,我还没有实现,大家可以根据自己的需求自由的去实现。

在运行的时候,celery会将配置好的优质用户列表定时发送到对应网站的解析接口异步执行,筛选出最新发布的视频播放地址,交给对应的下载接口异步下载,下载完成之后再异步调用后续操作。因此需要启动一个celery beat进程发送定时任务,以及若干celery异步任务去执行解析和下载操作,对于比较大的视频,下载会相当耗时,建议根据任务列表的多少合理分配异步任务的个数。

程序运行

经验证,此程序可以在ubuntu和mac下正常运行, 由于本地windows下的celery无法正常启动,所以没有在windows环境做过验证。

依赖库安装

python版本为3.5,进入项目目录后,执行:

pip install -r requirements.txt

创建数据库表

提前在数据库中建好两张表(sql:https://github.com/LiuRoy/parker/blob/master/spider/models/tables.sql)

参数配置

config路径下的logging.yaml、params.yaml、sites.yaml分别对应日志配置、运行参数配置、热门用户配置。

日志配置

debug模式下日志会直接输出在标准输出流,release模式下会将日志内容输出到文件中,因此需要配置输出日志文件。

运行配置

  • mode debug调试模式,此模式下日志指向标准输出,并且没有监控数据;release模式下,日志输出到制定文件,并且有监控数据。
  • broker_url 对应于celery的BROKER_URL,可以配置为redis或者rabbitmq
  • mysql_url 数据库地址,需要提前建好两张表
  • download_path 视频下载路径
  • statsd_address 监控地址
  • video_number_per_page 每次从用户视频主页解析出多少条视频播放地址,因为大部分用户每次发布的视频个数很少,只需要设置成一个很小的值即可。在初次运行的时候,也不会下载大量久远的视频。
  • download_timeout 视频下载的超时时间

热门用户配置

parker会根据此配置生成一份celery beat scheduler列表。

  • name 规则是<网站类型>-<任务id>,parker会根据此作为scheduler任务名称
  • url 用户的发布视频主页
  • task 对应的celery解析异步任务
  • minute 多少分钟检查一次用户视频列表

启动任务

进入项目目录,执行下面命令启动celery worker

celery -A spider worker

执行下面命令启动celery beat定时任务

celery -A spider beat

监控

强烈安利一个docker镜像 https://hub.docker.com/r/samuelebistoletti/docker-statsd-influxdb-grafana/,一分钟配好监控环境有木有。之后只需要添加执行成功和执行异常的打点数据,就可以方便的监控程序是否正常运行了。

欢迎加入Python学习交流QQ群:535993938  禁止闲聊 ! 名额有限 ! 非喜勿进 !

Python实现视频下载相关推荐

  1. python视频下载-Python实现视频下载功能

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站 ...

  2. python编程实例视屏-使用Python实现视频下载功能实例代码

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有一个程序可以把各大视频网站的热门用户最新发布的视频下载下来,不仅方便了观看,还可以将没有版权的视频发布在个人社交网站上,增加自 ...

  3. 【kimol君的无聊小发明】—用python写视频下载器

    [kimol君的无聊小发明]-用python写视频下载器 前言 一.爬虫分析 1.视频搜索 2.视频下载 二.我的代码 写在最后 Tip:本文仅供学习与参考,且勿用作不法用途~ 前言 某个夜深人静的夜 ...

  4. python官网下载步骤视频-Python 实现视频下载

    最近一两年短视频业务风生水起,各个视频网站都有各自特色的短视频内容.如果有这样一个程序,可以把各大视频网站的热门用户最新发布的视频都下载下来,不仅方便自己观看,还可以将没有版权的视频发布在个人社交网站 ...

  5. python教程视频下载-Python学习精品教程,视频书籍打包下载

    这是Python书籍打包下载的地址,在下载之前,我首先要感谢分享资源的一位朋友(QQ的网名叫:破斧盛粥,非常感谢)链接:https://pan.baidu.com/s/1jMLa3mDcMfX9KaV ...

  6. python 网页视频下载工具 you-get 安装及使用

    公司网站上发布了视频都是YouTube上的,所以想要用一个方法把网站上的视频下载到本地,然后在网上找到了python3的web视频下载工具you-get. 首先需要安装python3,在python的 ...

  7. python爬虫视频下载代码_Python3百行代码批量下载抖音视频|python爬虫|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 本文转载至知乎ID:Charles(白露未晞)知乎个人专栏 下载W3Cschool手机App,0基础随时随 ...

  8. python 爬视频下载_Python爬虫进阶之爬取某视频并下载的实现

    这篇文章我们来讲一下在网站建设中,Python爬虫进阶之爬取某视频并下载的实现.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 这几天在家闲得无聊,意外的挖掘到了一个资源网站 ...

  9. python爬虫视频 下载 黑马_Python爬虫能爬视频么(python爬虫零基础视频教程)

    Python爬虫能爬视频么 他视频没有的,但是跑了之后你要处理这个视频,就是问题的?你只需要,得到视频的播放地址,还是要把视频完整的下载到本地的.如果只是爬那个视频的下载地址,很简单,如果要下载的话, ...

  10. python教程视频下载-python怎么下载视频

    在进行爬虫的时候,经常需要保存视频到本地.通常得先获得视频(.mp4)的下载链接,再设置保存到本地的路径(路径包括最后的命名, 例如:D:/1.mp4),因此函数传入的参数为url和path. 例子: ...

最新文章

  1. Highmaps网页图表教程之Highmaps第一个实例与图表构成
  2. BIOS中断相关资料和应用
  3. 【转】UNITY之LUA加密
  4. unity text不能刷新_Unity使用ComputerShader实时压缩RT!
  5. Linux操作系统yum常用命令
  6. 软件定义存储相比传统存储系统的优势
  7. JavaScript 原型对象和原型链
  8. 在Angular外部使用js调用Angular控制器中提供的函数方法或变量
  9. 关于自定义通知事件的跨线程问题
  10. java 万年历接口_农历计算,农历查询API接口,万年历农历查询,农历+禁忌查询 |在线免费 API...
  11. ftp服务器目录创建文件夹,ftp服务器目录创建文件夹
  12. star法则 java_STAR法则(示例代码)
  13. openSUSE 11.2 上试动Mono
  14. JAVA简介及视频教程
  15. XLSReadWriteII 读取EXCEL数据 动态响应字段的列编号
  16. iOS内存扫描工具实现
  17. 关于人工智能的定义,这篇文章定义比较全面了
  18. 基于arduino的5路循迹小车(1)
  19. 分布式数据库稳定性资料整理
  20. 史上最强大的procreate笔刷,调色卡,字体分享站点大推荐

热门文章

  1. XAMPP下的Tomcat 7运行出现“1% 不是有效的 Win32 应用程序。”
  2. 使用Arduino开发ESP32(18):使用Preferences保存数据
  3. 带你深入剖析TCP/IP协议、TCP协议和UDP协议、IP协议
  4. ruby语言+Devkit 工具
  5. Eclipse LDT 安装
  6. 封神榜中的截教教徒是如何被杀的----开篇
  7. 台式机主板常见接口资料
  8. 双碳实力 | 谱尼成为上海市环境保护产业协会应对气候变化专委会成员单位
  9. iOS-关于解决WebView、WKWEbView打开pdf文件乱码问题
  10. 强化学习三、策略迭代与值迭代