手把手教你使用Python网络爬虫获取亚马逊商品页面的m3u8格式视频
回复“书籍”即可获赠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学习群请在后台回复【入群】
万水千山总是情,点个【在看】行不行
相关阅读
-
世界热推荐:今晚7:00直播丨下一个突破...
今晚19:00,Cocos视频号直播马上点击【预约】啦↓↓↓在运营了三年... -
NFT周刊|Magic Eden宣布支持Polygon网...
Block-986在NFT这样的市场,每周都会有相当多项目起起伏伏。在过去... -
环球今亮点!头条观察 | DeFi的兴衰与...
在比特币得到机构关注之后,许多财务专家预测世界将因为加密货币的... -
重新审视合作,体育Crypto的可靠关系才能双赢
Block-987即使在体育Crypto领域,人们的目光仍然集中在FTX上。随着... -
简讯:前端单元测试,更进一步
前端测试@2022如果从2014年Jest的第一个版本发布开始计算,前端开发... -
焦点热讯:刘强东这波操作秀
近日,刘强东发布京东全员信,信中提到:自2023年1月1日起,逐步为...