python学习之爬取ts流电影

需求

 **前言**
	最近学习Python,语法规则、变量等也看完了,但是觉得啥也没记住,打开
	py不知道写啥,只能print(“xxx”)(ps:此处手动尴尬)。听说py网络爬取
	挺不错就想着,通过爬取网上的电影来增加兴趣吧,找了一些电影网站,
	F12后发现很多网站上电影格式都是ts分流的ts这个东东也是刚知道的。ts
	流数据简单理解就是把一个高清电影分割成成千上万个ts格式的小文件。这
	些小文件的时长、顺序以及加密方式都放在一个xxx.m3u8文件中,所以只要
	下载m3u8文件,然后构造并下载所有ts文件就可以将电影下载本地播放了。
**简单写下需求**:
	输入电影网址,运行程序,即可自动下载电影所有的ts流文件,下载完成后,自动合并成MP4或其他视频格式的文件。

程序结构目录

在这里插入图片描述
目录结构释义:

movieDownload:根目录
main:主程序目录
  function.py:下载ts文件的方法模块
  getConfig.py:获取配置文件方法
  main.py:主程序
config:配置文件目录
  config.ini:配置文件
output:ts流文件输出目录
  m3u8.txt:待下载的网址文件
log:日志目录
  log.log:日志文件

编写代码

基本思路

1.找到电影的index.m3u8文件url(这个文件中包含所有ts流文件名及顺序。后面需要通过该文件构造出所有的ts流文件下载,以及最后的合并顺序),把index.m3u8的url地址写入到m3u8.txt文件中。
2.下载u3m8文件
3.读取u3m8文件,把里面ts小文件名放入一个列表中待用。
4.循环从步骤3中的列表中读取单个ts链接,并下载到指定的目录。
5.合并所有ts小文件为ts(或MP4)格式。
6.美滋滋的观赏。

代码编写

使用的是PyCharm框架。

main.py代码:

# -*- coding:utf-8 -*-

"""
To be or not to bo ,That is a question !
"""
_author_ = 'wmx'

import os
import traceback
import movieDownload.main.getConfig as conf
from multiprocessing import Pool
import movieDownload.main.Function as fun

if __name__ == "__main__":
    try:
        fun.logging.debug("【需要下载的电影url文件目录】:" + conf.m3u8FilePath)
        fun.logging.debug("【下载文件存储的根目录】:" + conf.filePath)
        print("【需要下载的电影url文件目录】:" + conf.m3u8FilePath)
        print("【下载文件存储的根目录】:" + conf.filePath)

        m3u8FilePath = conf.m3u8FilePath #m3u8.txt文件的路径,从配置文件获取
        filePath = conf.filePath #下载的文件存储根目录,从配置文件获取
        urlList = fun.getM3u8List(m3u8FilePath) #获取m3u8.txt文件中的需要下载的url链接数量并放入列表。
        fun.logging.debug("【需要下载的url数量】:"+str(len(urlList)))
        print("【需要下载的url数量】:"+str(len(urlList)))
        newDir = 0 #定义一个变量newDir,每个url下载的ts流文件放在单独的一个文件夹中,文件夹名从0开始。

        for i in urlList: #循环取urlList的url
            i=i.replace('\n','') #取出的url链接末尾会有一个换行符,去掉。
            needDir = filePath+str(newDir) #构造新目录存放下载的ts文件,文件夹不存在的时候创建。
            if not os.path.exists(needDir):
                os
  • 7
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值