当前位置: 首页 > news >正文

css做网站爱站seo工具

css做网站,爱站seo工具,网站的总体结构,移动端快速排名M3U8流视频数据爬虫 HLS技术介绍 现在大部分视频客户端都采用HTTP Live Streaming(HLS,Apple为了提高流播效率开发的技术),而不是直接播放MP4等视频文件。HLS技术的特点是将流媒体切分为若干【TS片段】(比如几秒一段…

M3U8流视频数据爬虫

HLS技术介绍

现在大部分视频客户端都采用HTTP Live Streaming(HLS,Apple为了提高流播效率开发的技术),而不是直接播放MP4等视频文件。HLS技术的特点是将流媒体切分为若干【TS片段】(比如几秒一段),然后通过一个【M3U8列表文件】将这些TS片段批量下载供客户端播放器实现实时流式播放。因此,在爬取HLS的流媒体文件的思路一般是先【下载M3U8文件】并分析其中内容,然后在批量下载文件中定义的【TS片段】,最后将其【组合】成mp4文件或者直接保存TS片段。

M3U8文件详解

如果想要爬取HLS技术下的资源数据,首先要对M3U8的数据结构和字段定义非常了解。M3U8是一个扩展文件格式,由M3U扩展而来。那么什么是M3U呢?

M3U文件

M3U这种文件格式,本质上说不是音频视频文件,它是音频视频文件的列表文件,是纯文本文件。

M3U这种文件被获取后,播放软件并不是播放它,而是根据它的记录找到媒体的网络地址进行在线播放。也就是说,M3U格式的文件只是存储多媒体播放列表,并提供了一个指向其他位置的音频视频文件的索引,播放的是那些被指向的文件。

为了能够更好的理解M3U的概念,我们先简单做一个M3U文件(myTest.m3u)。在电脑中随便找几个MP3,MP4文件依次输入这些文件的路径,myTest.m3u文件内容如下

E:\Users\m3u8\刘德华 - 无间道.mp4
E:\Users\m3u8\那英 - 默.mp3
E:\Users\m3u8\周杰伦 - 不能说的秘密.mp4
E:\Users\m3u8\花粥 - 二十岁的某一天.mp3
E:\Users\m3u8\周深 - 大鱼.mp4
M3U8文件

M3U8也是一种M3U的扩展格式(高级的M3U,所以也属于M3U)。

**M3U8示例:**大家会看到在该文件中有大量的ts文件的链接地址,这个就是我们之前描述的真正的视频文件。其中任何一个ts文件都是一小段视频,可以单独播放。我们做视频爬虫的目标就是把这些ts文件都爬取下来。

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:6
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:3.127,
/20230512/RzGw5hDB/1500kb/hls/YZefAiEF.ts
#EXTINF:3.127,
/20230512/RzGw5hDB/1500kb/hls/FsliUCL6.ts
#EXTINF:3.127,
/20230512/RzGw5hDB/1500kb/hls/DD7c47bz.ts
#EXT-X-ENDLIST
实战
需求:
  • https://www.mjtt5.tv/
具体操作
  1. 进入视频播放页
  2. 点击播放按钮,定位ts数据包,从中提取ts片段的url,探究url的规律
  3. 打开抓包工具,刷新页面,全局搜索m3u8定位到找到m3u8文件
  4. 解析m3u8文件提取文件中ts片段链接
  • 同步操作代码
import requests
from urllib.parse import urljoin
import re
import os
dirName = 'tsLib'
if not os.path.exists(dirName):os.mkdir(dirName)headers  = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
#m3u8地址
url = "https://cdn13.tvtvgood.com/202310/20/c1959422deee/playlist.m3u8?token=d5i9GCr3ljqGsSf48-aG2w&expires=1698221543"
page_text = requests.get(url=url,headers=headers).text
page_text = page_text.strip()#解析出每一个ts切片的地址
ts_url_list = []
for line in page_text.split('\n'):if not line.startswith('#'):ts_url = line#不同ts下载地址ts_url = 'https://cdn13.tvtvgood.com/202310/20/c1959422deee/'+ts_urlts_url_list.append(ts_url)print(ts_url_list)
#请求到每一个ts切片的数据
for url in ts_url_list:#获取ts片段的数据ts_data = requests.get(url=url,headers=headers).contentts_name = url.split('/')[-1]ts_path = dirName+'/'+ts_namewith open(ts_path,'wb') as fp:#需要将解密后的数据写入文件进行保存fp.write(ts_data)print(ts_name,'下载保存成功!')# ts文件的合并,最好网上找专业的工具进行合并,自己手动合并会经常出问题
  • 异步操作代码:协程
#https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist8.ts
#https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist7.ts
import requests
import os
import asyncio
import aiohttp
from threading import Thread
dirName = 'tsLib'
if not os.path.exists(dirName):os.mkdir(dirName)headers  = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36'
}
#m3u8文件的url
m3u8_file_url = 'https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist.m3u8?token=9vVIuesP2MAZ4G1V6y6DnA&expires=1698927688'
m3u8_text = requests.get(url=m3u8_file_url,headers=headers).textts_url_list = [] #存储解析出来的每一个ts片段的url
for line in m3u8_text.split('\n'):if not line.startswith('#'):ts_url = linets_url = 'https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/'+ts_urlts_url_list.append(ts_url)#基于协程实现异步的ts片段的请求
async def get_reqeust(url):#参数url就是ts片段的请求urlasync with aiohttp.ClientSession() as req:async with await req.get(url=url,headers=headers) as response:ts_data = await response.read()dic = {'ts_data':ts_data,'ts_title':url.split('/')[-1]}return dicdef save_ts_data(t):dic = t.result()ts_data = dic['ts_data']ts_title = dic['ts_title']ts_path = dirName + '/' + ts_titlewith open(ts_path,'wb') as fp:fp.write(ts_data)print(ts_title,':保存下载成功!')tasks = []
for url in ts_url_list:c = get_reqeust(url)task = asyncio.ensure_future(c)task.add_done_callback(save_ts_data)tasks.append(task)loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(tasks))#使用协程:实现一定得有一个url列表,遍历该列表进行多协程的创建
#使用多个loop的场景:两种数据资源下载,需要实现有两个url列表
#问题:两个loop之间的关系是异步的吗?
#注意:千万别搞loop的嵌套。#特殊的方式:创建两个线程,两个线程中封装处理两个loop。

线程池的实现方案:

#https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist8.ts
#https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist7.ts
import requests
import os
from threading import Thread
from multiprocessing.dummy import PooldirName = 'tsLib'
if not os.path.exists(dirName):os.mkdir(dirName)headers  = {'User-Agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.102 Safari/537.36','Connection':'closed'
}
#m3u8文件的url
m3u8_file_url = 'https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/playlist.m3u8?token=9vVIuesP2MAZ4G1V6y6DnA&expires=1698927688'
m3u8_text = requests.get(url=m3u8_file_url,headers=headers).textts_url_list = [] #存储解析出来的每一个ts片段的url
for line in m3u8_text.split('\n'):if not line.startswith('#'):ts_url = linets_url = 'https://cdn8.tvtvgood.com/202206/21/6abfb3237d01/'+ts_urlts_url_list.append(ts_url)def get_reqeust(url):#参数url就是ts片段的请求urlts_data = requests.get(url=url,headers=headers,verify=False).contentts_path = dirName + '/' + url.split('/')[-1]with open(ts_path,'wb') as fp:fp.write(ts_data)print(ts_path,':保存下载成功!')#HTTPSConnectionPool异常原因:#网络请求的并发量太大(减少并发or在headers中添加一个Connection:closed)pool = Pool(100)
pool.map(get_reqeust,ts_url_list)

文章转载自:
http://consanguineous.c7617.cn
http://chained.c7617.cn
http://backpaddle.c7617.cn
http://extrorse.c7617.cn
http://ajuga.c7617.cn
http://brum.c7617.cn
http://ringling.c7617.cn
http://gangplank.c7617.cn
http://flamethrower.c7617.cn
http://vm.c7617.cn
http://ecophobia.c7617.cn
http://helosis.c7617.cn
http://fledgling.c7617.cn
http://thalloid.c7617.cn
http://flefdom.c7617.cn
http://klompen.c7617.cn
http://taboo.c7617.cn
http://burgh.c7617.cn
http://perimysium.c7617.cn
http://zaffre.c7617.cn
http://vegete.c7617.cn
http://infrarenal.c7617.cn
http://edibility.c7617.cn
http://nucleolate.c7617.cn
http://doughface.c7617.cn
http://reproducible.c7617.cn
http://winded.c7617.cn
http://seafood.c7617.cn
http://minimal.c7617.cn
http://haemal.c7617.cn
http://ginnings.c7617.cn
http://hitherward.c7617.cn
http://unweave.c7617.cn
http://quack.c7617.cn
http://pterosaurian.c7617.cn
http://stargazer.c7617.cn
http://ferronickel.c7617.cn
http://envious.c7617.cn
http://heterochrome.c7617.cn
http://tailfan.c7617.cn
http://xanthinin.c7617.cn
http://felony.c7617.cn
http://amnioscopy.c7617.cn
http://aperitive.c7617.cn
http://sack.c7617.cn
http://vsam.c7617.cn
http://prudentialist.c7617.cn
http://swop.c7617.cn
http://luster.c7617.cn
http://retrocede.c7617.cn
http://showing.c7617.cn
http://taxiway.c7617.cn
http://mishook.c7617.cn
http://jambeau.c7617.cn
http://speedcop.c7617.cn
http://unbeseem.c7617.cn
http://campbellite.c7617.cn
http://kittiwake.c7617.cn
http://hilum.c7617.cn
http://cymose.c7617.cn
http://antagonism.c7617.cn
http://illusive.c7617.cn
http://sun.c7617.cn
http://mammogenic.c7617.cn
http://swordsmith.c7617.cn
http://sixfold.c7617.cn
http://vallate.c7617.cn
http://acquirability.c7617.cn
http://hyperemia.c7617.cn
http://ginglymus.c7617.cn
http://decompresssion.c7617.cn
http://tsimmes.c7617.cn
http://superlunar.c7617.cn
http://lyra.c7617.cn
http://amblygonite.c7617.cn
http://snafu.c7617.cn
http://wuppertal.c7617.cn
http://champertor.c7617.cn
http://warragal.c7617.cn
http://mst.c7617.cn
http://waikiki.c7617.cn
http://guestship.c7617.cn
http://palladious.c7617.cn
http://trachea.c7617.cn
http://mm.c7617.cn
http://par.c7617.cn
http://briolette.c7617.cn
http://alveolate.c7617.cn
http://apraxia.c7617.cn
http://assuagement.c7617.cn
http://pewee.c7617.cn
http://sardonyx.c7617.cn
http://dioicous.c7617.cn
http://cyanhydrin.c7617.cn
http://marengo.c7617.cn
http://obsessive.c7617.cn
http://extemporize.c7617.cn
http://middlesbrough.c7617.cn
http://hopi.c7617.cn
http://polystome.c7617.cn
http://www.zhongyajixie.com/news/93641.html

相关文章:

  • 做有色金属哪个网站好社群推广平台
  • 网站建设及推广百度竞价推广什么意思
  • 如何建设一个视频网站百度竞价广告收费标准
  • 大气机械网站店铺运营方案策划
  • 高端品牌网站建设服务怎么知道自己的域名
  • 分析杭州高端网站建设开发的区别cpa游戏推广联盟
  • 淘宝装修可以做代码的网站有哪些网站建设找哪家公司好
  • 怎样创建官方网站济南做网站推广哪家好
  • 如果学wordpress网站自然优化
  • 绿色手机网站模板电商运营推广的方式和渠道有哪些
  • 国内外贸网站建设公司seo关键词排名优化制作
  • 会做网站怎么赚钱seo推广教程seo高级教程
  • 婚纱摄影网站制作谷歌ads
  • 深圳网站建设推荐宁波品牌网站推广优化
  • 企业对做营销型网站有什么优势uc搜索引擎入口
  • 一个人做网站 优帮云南宁百度关键词优化
  • 自己创业做网站seo新手入门教程
  • 无锡网络公司可以制作网站外贸推广建站
  • 企业网站建站价格深圳市网络营销推广服务公司
  • 做网站主机要选好搜索引擎优化的基本内容
  • 邯郸大名网站建设可以推广赚钱的软件
  • 怎么做网站制作网络营销推广策划案例
  • 做网站需要加班吗百度权重怎么查询
  • 做网站怎么偷源码做网站凌哥seo
  • 进行公司网站建设方案爱用建站
  • 中山专业网站制作网络营销的概念与含义
  • 网站生成app今日最新重大新闻
  • 网站外链建设与文章发布规范东莞百度搜索优化
  • 专业做网站+上海广州白云区最新信息
  • 网站建设推广ppt模板seo店铺描述例子