点击联系客服
客服QQ: 客服微信:
搜索
热搜: 活动 交友 discuz
Hi~登录注册
查看: 323|回复: 50

下载python爬虫电视剧

[复制链接]

1

主题

1

帖子

-7

积分

限制会员

积分
-7
发表于 2021-9-28 07:35:09 | 显示全部楼层 |阅读模式
阅读前声明:本文因技术交流、尊重著作权、尊重原创、科学互联网、非法途径、安全技术使用、技术使用不当而造成不良后果,本人不负责任

目录

显示问题的起源网络分析代码示例结果

问题起源

最近想学英语,想看几节课,建议在里面看美剧。里面推荐了几部美剧,好像不错。还没读完呢。有兴趣的人可以看。(大卫亚设,北方执行部队)!

阴影列表如下:

《安娜》 《时尚女魔头》 《行动目标希特勒》朋友推荐了“人电影”的资源,是我自己的网络问题,还是网站服务器是外部的,

网络分析

例如,以《安娜》为例,开发人员模式查询网络传输,首先查找m3u8的请求。这里是双层嵌套,但没有加密,加密暂时没有办法。网络上有很多例子。很多尝试都没有成功。

说明:m3u8是以记录版本号、加密方法、文件列表等信息的文件列表形式存在的流媒体格式。

首先查找第一级索引文件,如下图所示





将请求URL直接复制到浏览器,下载m3u8文件,然后使用记事本/记事本打开。文件内容如下:这里是实际的m3u8文件路径





播放片段,找到ts片段,检查当前请求域路径。





连接前域路径和前一层的m3u8路径。

获取实际的m3u8请求





重复上一步:将整个连接复制到浏览器-下载

在这里获取所有ts路径和顺序,解释合并。
就可以了



代码示例
import requests,os
def download_ts_file(url,num,total):
   
    """单个ts文件下载"""
   
    # 这里可以用自己的,也可以使用 fake_useragent 生成随机请求头
    headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}
    response=requests.get(url,headers=headers)
   
    data = response.content
    file_name = url.split("/")[-1]
    ts_path = os.path.join(tmp_path,file_name)
    with open(ts_path,'wb') as f:
        f.write(data)
    f.close()
    print(f"第【{num+1}/{total}】个ts片段{file_name}下载完成")
    return None
# ts临时存储路径
tmp_path = os.path.join(os.getcwd(),"tmp_path")
# 读取并解析ts链接
f = open("index.m3u8","r",encoding="utf-8")
m3u8 = f.readlines()
f.close()
url_list = [url.split("\n")[0] for url in m3u8 if "https" in url]
# 循环下载各个ts片段--这里可以使用多线程,这里出于安全考虑没有加速,感兴趣的可以自己试试
[download_ts_file(url,url_list.index(url),len(url_list)) for url in url_list]
----------重要的事情说三遍,注意安全注意安全注意安全--------
----------重要的事情说三遍,注意安全注意安全注意安全--------
----------重要的事情说三遍,注意安全注意安全注意安全--------
—————————————————————————————————————————————————————
-----------分割线,多线程速度贼快,注意安全哦!----------
-----------本来不想用多线程的,奈何单线程实在太慢----------
import requests,os
def download_ts_file(num,url_list):
   
    """单个ts文件下载"""
   
    url,total = url_list[num],len(url_list)
   
    # 这里可以用自己的,也可以使用 fake_useragent 生成随机请求头
    headers={'User-Agent':'xxxxx'}
    response=requests.get(url,headers=headers)
   
    data = response.content
    file_name = url.split("/")[-1]
    ts_path = os.path.join(tmp_path,file_name)
    with open(ts_path,'wb') as f:
        f.write(data)
    f.close()
    print(f"第【{num+1}/{total}】个ts片段{file_name}下载完成")
    return None
   
# ts临时存储路径
tmp_path = os.path.join(os.getcwd(),"tmp_path")
# 读取并解析ts链接
f = open("index.m3u8","r",encoding="utf-8")
m3u8 = f.readlines()
f.close()
url_list = [url.split("\n")[0] for url in m3u8 if "https" in url]
# 循环下载各个ts片段--这里可以使用多线程,这里出于安全考虑没有加速,感兴趣的可以自己试试
from concurrent.futures import ThreadPoolExecutor  # 线程池
p = ThreadPoolExecutor(8)
for num in range(len(url_list)):
    p.submit(download_ts_file, num,url_list)
———————————————————我又是一条分割线——————————————
——————————————下面是怎么把ts合成成MP4格式——————————
#方法一:直接读取写入,注意按照m3u8文件给出的顺序读取写入
import os
# ts临时存储路径
tmp_path = os.path.join(os.getcwd(),"tmp_path")
# 读取并解析ts链接
f = open("index.m3u8","r",encoding="utf-8")
m3u8 = f.readlines()
f.close()
url_list = [url.split("\n")[0] for url in m3u8 if "https" in url]
with open('安娜2019.mp4','wb') as f2:
    for url in url_list:
        file_name = url.split("/")[-1]
        ts_path = os.path.join(tmp_path,file_name)
        f1 = open(ts_path,"rb")
        data = f1.read()
        f1.close()
        f2.write(data)
f2.close()

合并ts还有一种方法,但是上限只能合并450个,我们这里是大视频不适用,可以了解参考下,当然有方法规避这个bug,这里不细讲了,有兴趣的自己查下资料


python合并大量ts文件成mp4格式(ps:上限是450,亲测)


结果展示




回复

使用道具 举报

1

主题

402

帖子

-237

积分

限制会员

积分
-237
发表于 2021-9-28 07:37:20 | 显示全部楼层
相当不错,感谢无私分享精神!
回复

使用道具 举报

0

主题

361

帖子

-198

积分

限制会员

积分
-198
发表于 2021-9-28 08:17:47 | 显示全部楼层
帮你顶下哈!!
回复

使用道具 举报

1

主题

408

帖子

-255

积分

限制会员

积分
-255
发表于 2021-9-28 09:42:50 | 显示全部楼层
写的真的很不错
回复

使用道具 举报

1

主题

410

帖子

-260

积分

限制会员

积分
-260
发表于 2021-9-28 10:49:37 | 显示全部楼层
好好 学习了 确实不错
回复

使用道具 举报

0

主题

412

帖子

-269

积分

限制会员

积分
-269
发表于 2021-9-28 11:54:57 | 显示全部楼层
路过,学习下
回复

使用道具 举报

1

主题

407

帖子

-224

积分

限制会员

积分
-224
发表于 2021-9-28 12:18:26 | 显示全部楼层
难得一见的好帖
回复

使用道具 举报

1

主题

387

帖子

-201

积分

限制会员

积分
-201
发表于 2021-9-28 12:40:30 | 显示全部楼层
帮你顶下哈!!
回复

使用道具 举报

1

主题

365

帖子

-257

积分

限制会员

积分
-257
发表于 2021-9-28 13:20:35 | 显示全部楼层
难得一见的好帖
回复

使用道具 举报

1

主题

385

帖子

-232

积分

限制会员

积分
-232
发表于 2021-9-28 13:48:43 | 显示全部楼层
我是个凑数的。。。
回复

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表