记一次用Python爬取.ts文件并合并


前言

想要获取一个视频,但是相应的App里面不能直接下载,因此,想到了爬虫技术。(PS:本人纯新手,模块的使用都是网上找的资源,如有错误,欢迎批评指正!大家伙一块进步,嘻嘻。)


一、网页源代码分析

爬取的视频链接: 戳这里
进入网页后,点击F12,会出现以下界面,方便查看网页元素,进行分析。
在这里插入图片描述
此时,再点击NetWork,然后再点击F5键,看看有哪些数据会被请求。

在这里插入图片描述

一般的话,视频文件可以在Media或者Other里面找到。这里我分别给出前者和后者的截图:
在这里插入图片描述
在这里插入图片描述
这样的话,就基本可以找到每一个.ts文件的请求网址了。
在这里插入图片描述
由上图我们可以发现,这个.ts文件的对应网址和它的请求网址的后缀是相同的。所以我们可以采用senlium来进行网页模拟,直接遍历所有的.ts文件,就可以下载了。(这里小声bb:直接用webdriver对这个网址进行请求,就可以将文件下载到默认的路径,我的默认路径为:C:\Users\lenovo\Downloads,别问我怎么换路径,我也不知道,留下了没有技术的眼泪,嘤嘤嘤)。经过查看,这个视频一共有270个ts文件,所以代码思路大致有了!


二、编写程序

1.引入第三方库

from selenium import webdriver
import time

2.爬虫程序进行下载

for page in range(0, 270):  # 这个视频一共有270个ts文件,[0, 270)
    driver = webdriver.Chrome()
    driver.get(
        'https://hls.cntv.lxdns.com/asp/hls/1200/0303000a/3/default/ea8eb87452b545198c17f899e259bc9b/{}.ts'.format(page)
    )
    time.sleep(3)  # 需要设置等待时间,好让文件能够下载,这里文件不大,3秒足够了
    print('第{}页下载完毕,还有{}页'.format(page, 270-page-1))
    driver.close()

3.程序源代码

from selenium import webdriver
import time

for page in range(0, 270):  # 这个视频一共有270个ts文件,[0, 270)
    driver = webdriver.Chrome()
    driver.get(
        'https://hls.cntv.lxdns.com/asp/hls/1200/0303000a/3/default/ea8eb87452b545198c17f899e259bc9b/{}.ts'.format(page)
    )
    time.sleep(3)  # 需要设置等待时间,好让文件能够下载,这里文件不大,3秒足够了
    print('第{}页下载完毕,还有{}页'.format(page, 270-page-1))
    driver.close()

print('下载完毕')

4.下载文件截图

在这里插入图片描述
而且下载后的ts文件都是已经按照顺序命名好了的,接下来轮到合并了。

三、合并ts文件

这一步我度娘过很多资源,但是结果都不是很好,原来四十多分种的视频,按照网上的方法来的话,就直接变成了16分钟,中间漏了好多(也有可能是我合并的代码写的太low)。所以这一步我直接在网上找了一个合并ts文件的小插件。官网里面关于使用方法说的很明确,我这里就不再赘述了哈~~
注:该插件合并以后文件格式仍未.ts


四、自我总结

关于这次爬虫,感觉还是自己的能力不足。爬虫程序运行很慢,以后尝试着使用多线程来提高程序的运行速度。另外的话,关于那个ts文件合并,我玩了要好好研究一下,日后应该会出一期教程。另外的话,不建议大家闲着没事就搞爬虫,避免给一些网站带来一些不必要的麻烦!

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值