爬取腾讯vip视频

今天用油猴脚本vip一件解析看神奇队长。想到了问题,这个页面应该是找到了视频的api的接口,通过接口调用获取到了视频的地址。

那自己找腾讯视频地址多费劲啊,现在越来越多的参数,眼花缭乱的。

那我就找到这个能够解析vip视频的,解析网站的视频地址,不就OK了。

network上发现,这个视频是通过ts流的形式。

并且还有视频地址和index.m3u8,但是我们怎么获得这些20190527/参数呢。(m3u8中有一部电影的所有ts流参数)

我找到了个api.php,即接口地址,访问,返回json数据。

url: http://p.p40.top/api.php?url=https%3A%2F%2Fv.qq.com%2Fx%2Fcover%2Fxyne4253g35nak3%2Fm0031od9ekb.html

看到了视频流所在地址,然后访问地址,可以直接下载m3u8文件,文件中就是ts流参数了。

因此思路就是:用py模拟浏览器向解析网站的api.php请求你想看的vip视频的url即http://p.p40.top/api.php?url=https%3A%2F%2Fv.qq.com%2Fx%2Fcover%2Fxyne4253g35nak3%2Fm0031od9ekb.html

然后正则匹配到m3u8的地址,去请求后,下载到本地,打开匹配ts流的数字id。

发现视频地址就是api返回的json数据的url+/1000k/hls/xxx

然后依次下载完ts流文件后,保存到本地。再转化成mp4,明儿实现。网上有些现成的。我试着改编下。

这样父母不需要怎么操作,我直接下下来本地给他们看就好了。嘿嘿

脚本如下:

# -*- coding: UTF-8 -*-
import requests
import re
import os,shutil
from urllib.request import urlretrieve
from multiprocessing import Pool

def cbk(a,b,c):
    ‘‘‘‘‘回调函数
    @a:已经下载的数据块
    @b:数据块的大小
    @c:远程文件的大小
    ‘‘‘
    per=100.0*a*b/c
    if per>100:
        per=100
    print(‘%.2f%%‘ % per)

def get_api_data(QQ_film_url): #正则匹配获取api返回的index.m3u8链接地址
    api_url=‘http://p.p40.top/api.php‘
    user_agent={‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36‘}
    get_url=api_url+‘?url=‘+QQ_film_url
    print(get_url)
    response=requests.get(get_url,headers=user_agent).text
    pattern=re.compile(‘url.*?m3u8‘)
    get_data=pattern.findall(response)[0][6:].replace(‘\\‘,‘‘)
    return get_data

def m3u8_download(m3u8_url):#获取下载m3u8文件
    if os.path.exists(‘F:\\vip电影\\index.m3u8‘)!=True:#判断文件是否已经存在,存在则不操作。不存在才下载。
        urlretrieve(url=m3u8_url, filename=path, reporthook=cbk)
    else:
        print(path+‘已存在‘)

def get_ts():#通过m3u8文件,正则匹配需要的ts流
    with open(path)as f:
        data=f.read()
    pattern=re.compile(‘.*.ts‘)
    get_ts_data=re.findall(pattern,data)
    return get_ts_data

def ts_download(ts_list):#下载ts流
    try:
        ts_url = m3u8_url[:-10]+‘{}‘.format(ts_list)#获取ts流 url地址
        urlretrieve(url=ts_url, filename=path[:-10] + r‘\\‘ + ‘{}‘.format(ts_url[-8:]))
    except Exception:
        print(ts_url+‘保存文件错误‘)

def pool(ts_list):#多进程爬取所有的ts流到文件夹中,参考的那个py脚本,没用过pool进程池
    print(‘经过计算,需要下载%s个文件‘%len(ts_list))
    print(ts_list[0])
    pool=Pool(16)
    pool.map(ts_download,[i for i in ts_list])
    pool.close()
    pool.join()
    print(‘下载完成‘)
    ts_to_mp4()

def ts_to_mp4():
    print(‘dos实现ts合并为mp4‘)
    str = ‘copy /b ‘ + r‘F:\vip电影‘ + ‘\*.ts ‘ + ‘ ‘+ r‘F:\vip电影\gogogo‘ + ‘\jingqi.mp4‘
    os.system(str)
    if os.path.exists(‘F:\\vip电影\\gogogo\\jingqi.mp4‘)==True:
        print(‘good job‘)

path = ‘F:\\vip电影\\index.m3u8‘
url = ‘https://v.qq.com/x/cover/xyne4253g35nak3/m0031od9ekb.html‘
m3u8_url = get_api_data(url)[:-10] + ‘1000k/hls/index.m3u8‘
print(m3u8_url)
m3u8_download(m3u8_url)
ts_list = get_ts()
if __name__ == ‘__main__‘:
    pool(ts_list)

  

成功,可能是多进程模块的问题,还是出现了将近15个文件错误。少了15个文件,但是为啥爬下来的时长比腾讯视频里的还长。

脚本还有很多地方都可以改进(锻炼自己写脚本的能力),改成类的调用,通过类中的self,一个函数接着一个函数调用。并且试试用多线程试试,多进程总有奇怪的问题,不统一。

看了一会儿,发现,观影视觉极差,我感觉丢失的不止是15个文件,音话都不同步了,是不是直接copy拼接命令有瑕疵。有待研究

原文地址:https://www.cnblogs.com/BOHB-yunying/p/11602542.html

时间: 2024-08-28 05:21:46

爬取腾讯vip视频的相关文章

Python爬虫实战:爬取腾讯视频的评论

前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 一.前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于

爬虫----爬取校花网视频

import requests import re import time import hashlib def get_page(url): print('GET %s' %url) try: response=requests.get(url) if response.status_code == 200: return response.content except Exception: pass def parse_index(res): obj=re.compile('class="i

Python爬虫学习教程,批量爬取下载抖音视频

这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 这篇文章主要为大家详细介绍了python批量爬取下载抖音视频,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 项目源码展示: 1 ''' 2 在学习过程中有什么不懂得可以加我的 3 python学习交流扣扣qun,934109170 4 群里有不错的学习教程.开发工具与电子

Python爬虫爬取腾讯视频动漫专区的动漫及其描述

闲来无事爬点动漫资讯看看 下面这个是腾讯视频动漫板块的超链接 [https://v.qq.com/channel/cartoon?listpage=1&channel=cartoon&iarea=1] 上面的红框中第一个是动漫的标题,第二个是动漫的咨询简单描述 如何用Python爬取上述信息 首先要用浏览器的开发者工具查到相应的信息实在那几个html文件中 上面的红框中就是对应的标签,但我们用正则表达式取标签的时候应该尽量取它的上一层标签(因为如果单单取名字标签,很难把对应的描述最后对应起

不花一分钱,如何免费观看腾讯VIP视频

今天给大家带来一篇关于如何免费观看腾讯VIP的操作指南,方法很简单.好了,下面一起看一下吧. 正常来说,我们在观看腾讯视频的时候,如果不是VIP,有很多限制,比如视频广告,特别长,要40多秒.好吧,其实这个特别不合理,看广告的都是穷人家的孩子,买不起上面的产品(抖音上学到的). 说说如何免费跳过广告,并且免费播放VIP视频. 1.打开浏览器,百度搜索[暮无雪],对,就是我的熊掌号了.如图,不要走错了,百家号里没办法粘贴链接. 2.点击进入我的熊掌号,在页面最底部,有两个按钮,分别是[看吧]和[想

零基础如何学好python爬虫?之python爬取B站小视频

B 站真是个神奇的网站.找不到资料了,去 B 站逛一逛,保准有你满意的东西. 前几天写了个爬虫,用 path.re.BeautifulSoup 爬取的 B 站 python 视频,如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了 B 站真是个神奇的网站.找不到资料了,去 B 站逛一逛,保准有你满意的东西. 前几天写了个爬虫,用 path.re.BeautifulSoup 爬取的 B 站 python 视频,如果要爬取多页的话 在最下方循环中 填写好循环的次数就可以了 废话不多说直接上

下载腾讯VIP视频

1.找到自己想看的VIP视频网页地址,比如我就喜欢看一周一更的天行九歌,链接地址:https://v.qq.com/x/cover/rm3tmmat4li8uul/i0031xd1vjf.html 2.利用第三方解析网站,全名解析:https://jx.618g.com/?url=VIP电影地址 import requests # url地址 url = 'https://jx.618g.com/?url=https://v.qq.com/x/cover/rm3tmmat4li8uul/i003

使用Python爬取腾讯房产的新闻,用的Python库:requests 、re、time、BeautifulSoup ????

import requests import re import time from bs4 import BeautifulSoup today = time.strftime('%Y-%m-%d',time.localtime(time.time())) one_url = 'http://hz.house.qq.com' #用来构建新的URL的链接 url = 'http://hz.house.qq.com/zxlist/bdxw.htm' #需要爬取的网址 html = requests

1)⑥爬取腾讯经济相关的部分新闻

1 __author__ = 'minmin' 2 #coding:utf-8 3 import re,urllib,sgmllib 4 5 #根据当前的主页url获取html 6 def getHtml(url): 7 page = urllib.urlopen(url) 8 html = page.read() 9 page.close() 10 return html 11 12 13 #html链接的标签是“a”,链接的属性是“href”,也就是要获得html中所有tag=a,attrs