您的位置:首页 >聚焦 >

手把手教你使用Python网络爬虫获取亚马逊商品页面的m3u8格式视频

2022-04-13 09:00:16    来源:程序员客栈
点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

孤灯寒照雨,深竹暗浮烟。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群有个叫【顽皮Dolly】的粉丝问了一个Python网络爬虫的问题,抓取亚马逊商品视频,这里拿出来给大家分享下,一起学习下。

二、解决过程

这里【皮皮】给出了解答,一起来看看吧。

使用浏览器抓包发现,这个视频是m3u8格式的。m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。

找到Url,就可以处理了。

其实关于m3u8格式的视频下载,网上已经有很多教程了,也有人做出了小工具,可以直接拿过来用,也是非常卷了!这里使用【吴老板】写的小教程来演示。

【吴老板】的小教程链接:https://github.com/PY-GZKY/python-automation-docs/blob/master/docs/%E7%88%AC%E8%99%AB/m3u8%E9%9F%B3%E8%A7%86%E9%A2%91%E6%8B%BC%E6%8E%A5.md

里边的代码可以直接拿过来用,核心代码如下:

importdatetimeimporttimeimportosimportrequests#m3u8是本地的文件路径defget_ts_urls(m3u8_path):urls=[]withopen(m3u8_path,"r")asfile:lines=file.readlines()forlineinlines:ifline.endswith(".ts\n"):print(line)urls.append("https://m.media-amazon.com/images/S/vse-vms-transcoding-artifact-us-east-1-prod/084028a2-9a64-485f-a55b-676577059927/"+line.strip("\n"))returnurlsdefdownload(ts_urls,download_path):foriinrange(len(ts_urls)):ts_url=ts_urls[i]file_name=ts_url.split("/")[-1]print("开始下载%s"%file_name)try:response=requests.get(ts_url,stream=True,verify=False)exceptExceptionase:print("异常请求:%s"%e.args)returnts_path=download_path+"/{0}.ts".format(i)withopen(ts_path,"wb+")asfile:forchunkinresponse.iter_content(chunk_size=1024):ifchunk:file.write(chunk)time.sleep(.56)deffile_walker(path):file_list=os.listdir(path)#file_list.sort()file_list.sort(key=lambdax:int(x[:-3]))file_list_=[]forfninfile_list:#print(fn)p=str("tsfiles"+"/"+fn)file_list_.append(p)print(file_list_)returnfile_list_defcombine(ts_path,file_name):file_list=file_walker(ts_path)file_path=file_name+".MP4"withopen(file_path,"wb+")asfw:foriinrange(len(file_list)):fw.write(open(file_list[i],"rb").read())if__name__=="__main__":urls=get_ts_urls("./data.txt")download(urls,"tsfiles")combine("tsfiles","大理")

这个是依次下载的ts文件,都是一个个几秒的小文件。

之后使用【吴老板】小教程上的合并combine()函数对这些ts文件进行合并,得到一个mp4文件,如下图所示。

后来【孤独】大佬提出还可以使用ffmpeg库进行下载,使用命令:ffmpeg -allowed_extensions ALL -i m3u8链接 -c copy 输出视频,感兴趣的小伙伴们也可以试试看,方法还是很多的。

三、总结

大家好,我是Python进阶者。这篇文章主要分享了Python下载m3u8格式视频的问题,针对该问题给出了具体的解析和代码演示,帮助粉丝顺利解决了问题。

最后感谢粉丝【顽皮Dolly】提问,感谢【皮皮】、【吴老板】、【孤独】给出的具体解析和代码演示,感谢【dcpeng】、【冯诚】、【冷喵】、【阿策~】、【瑜亮老师】等人参与学习交流。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

-------------------End-------------------

往期精彩文章推荐:

盘点Python内置函数sorted()高级用法实战

手把手教你进行Python网络爬虫中的Charles+Postern抓包

Python网络爬虫之数美滑块的加密及轨迹~~动态js参数分析

盘点Python集合中一个“坑”

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【入群】

万水千山总是情,点个【在看】行不行

关键词: 网络爬虫 手把手教你 学习交流

相关阅读