网页直播视频抓取工具下载(简单研究一下一直播视频爬取视频直播 )

优采云 发布时间: 2022-02-16 06:27

  网页直播视频抓取工具下载(简单研究一下一直播视频爬取视频直播

)

  一个直播视频爬取的简单研究。

  原理很简单,代码也比较简单。

  我学的是视频,也就是直播的回放,不是实时的直播,但是我简单的看了一下。实时直播虽然稍微复杂一些,但工作原理大同小异。由于没有需求,我没有写代码。

  1.视频是ts格式的视频文件流,如0.ts 1.ts 2.ts直到视频结束xxx.ts

  2.所有视频文件的列表在index.m3u8的GET请求中

  3.请求的URL以html形式给出,视频流由CDN节点分发。

  4.在get_playback_event的GET请求中,request的方式是每3ts请求一次(我没有仔细检查是每3ts请求还是定时请求),这也导致了这个的bug 网站。视频快进后,弹幕没有变化,依旧以之前的速度移动。弹幕请求返回json格式数据

  

  由于我不需要弹幕,所以我没有编写弹幕的代码。其他代码如下。我们只需要输入视频的播放地址,运行程序自动下载即可。

  最后我们会得到很多ts文件,可以直接在播放器中播放。要将这些文件合二为一,我们只需要在cmd中运行如下程序即可。当然,我们可以直接使用python运行cmd命令。

  

  代码:

  #-*- coding:utf-8 -*-

import requests,re,urllib2,chardet,os

from multiprocessing.dummy import Pool

def urllink(link): #网页HTML获取以及编码转换

while 1:

try:

print '正在打开',link

html_1 = urllib2.urlopen(link, timeout=15).read()

print '打开成功',link

break

except:

print '失败重试',link

encoding_dict = chardet.detect(html_1)

web_encoding = encoding_dict['encoding']

if web_encoding == 'utf-8' or web_encoding == 'UTF-8':

html = html_1

else :

html = html_1.decode('gbk','ignore').encode('utf-8')

return html

def download(j):

url='https://%s%s'%(link,str(j))+'.ts'

for l in range(20):

try:

retu = requests.get(url, stream=True)

print str(j).zfill(5)+' 下载完成'

break

except:

print u'%s文件,正在重试第%d次' % (str(j).zfill(5),l + 1)

picpath = unicode(r'C:\Users\tLOMO\Desktop\mxy\%s' % str(j).zfill(5) + '.ts', 'utf-8')

file = open(picpath, 'wb')

for chunk in retu.iter_content(chunk_size=1024 * 8):

if chunk:

file.write(chunk)

file.flush()

file.close()

if __name__=="__main__":

url=raw_input('请输入视频地址:')

html=urllink(url)

link=re.search('play_url:"http://(.*?)index.m3u8',html,re.S).group(1)

m3u8='https://'+link+'index.m3u8'

list=requests.get(m3u8).text

count=int(re.findall('(.*?).ts',list.split('\n')[-2],re.S)[0])

print '共计:',count

list=[i for i in range(count+1)]

pool = Pool(4)

pool.map(download, list)

pool.close()

pool.join()

print '全部下载完成,正在合并'

os.system(r'copy/b C:\Users\tLOMO\Desktop\mxy\*.ts C:\Users\tLOMO\Desktop\mxy\new.ts')

print '合并完成'

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线