美文网首页
python爬取ts文件,合并

python爬取ts文件,合并

作者: 清风徐来_简 | 来源:发表于2019-06-10 00:06 被阅读0次
爬虫,日志,正则,递归,异常捕捉,线程池
1,准备电影网站

2,分析视频url链接 (起始url,终止url)

3,准备代码,下载至文件(关键)

import requests

import logging
import re

url = 'https://vip2.pp63.org/201903/21/Gp91Gn2m/600kb/hls/'  # 【根据url修改】


def download(name):
    str_name = str(name)
    if len(str_name) == 1:  # 【根据url修改】
        str_name = '00' + str_name
    elif len(str_name) == 2:  # 【根据url修改】
        str_name = '0' + str_name
    print(str_name)
    file_name = "1QIyv1Kg3296" + str_name + '.ts'  # 【根据url修改】
    print(url + file_name)
    try:
        res = requests.get(url=url + file_name, timeout=15)
        content = res.content

        with open(r'C:\Users\admin\Desktop\电影\%s' % file_name, 'wb')as f:
            f.write(content)
            print(file_name + '\x1b[1;30;42m 下载成功 \033[0m')
            num = name // 20
            print(file_name + '下载完成,' + '已下载' + ' %s %% %s' % (name / 11, '>' * num))  # 【假的进度条,能看个大概,根据url修改】

    except Exception as e:
        # 报错提示
        print(file_name + '\x1b[1;30;41m 下载失败 \033[0m')
        print(e)
        name = re.findall('1QIyv1Kg3296(\d+).ts', file_name)[0]  # 【根据url修改】
        print(name + ' 下载失败')

        # 记录日志
        my_log = logging.getLogger('lo')
        my_log.setLevel(logging.DEBUG)
        file = logging.FileHandler('error.log', encoding='utf-8')
        file.setLevel(logging.ERROR)
        my_log_fmt = logging.Formatter('%(asctime)s-%(levelname)s:%(message)s')
        file.setFormatter(my_log_fmt)
        my_log.addHandler(file)
        my_log.error(file_name + ' 下载失败 ')
        my_log.error(e)

        # 重新下载
        download(int(name))  # 如果报错,递归执行一遍


from concurrent.futures import ThreadPoolExecutor  # 线程池

p = ThreadPoolExecutor(8)
for name in range(1, 1101):  # 【根据url修改】
    p.submit(download, name)

# 功能:失败提示,失败重试,失败记录日志,线程池提高并发,超时重试。

4,合并,即可观看

打开cmd切进目录,执行copy /b *.ts video.ts合并速度超快。

相关文章

网友评论

      本文标题:python爬取ts文件,合并

      本文链接:https://www.haomeiwen.com/subject/jpwgxctx.html