欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

程序员文章站 2022-03-07 22:05:08
目录普通爬虫正常流程: 数据来源分析 发送请求 获取数据 解析数据 保存数据环境介绍 python 3.8 pycharm 2021专业版【付费vip完整版】...

普通爬虫正常流程:

  • 数据来源分析
  • 发送请求
  • 获取数据
  • 解析数据
  • 保存数据

环境介绍

  • python 3.8
  • pycharm 2021专业版

【付费vip完整版】只要看了就能学会的教程,80集python基础入门视频教学

点这里即可免费在线观看

分析网站

先打开开发者工具,然后搜索m3u8,会返回给你很多的ts的文件,像这种ts文件,就是视频的片段

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

我们可以复制url地址,在新的浏览页打开

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

然后会给我们下载ts的文件,打开文件,就会发现是十多秒的视频片段

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

所以说这些数据的数据还是比较好找的,只要我们找到地址是从哪里来的

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

找到url地址,因为是post请求,所以需要下面的表达参数

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

开始代码

导入模块

import requests
import re
from tqdm import tqdm # 进度条展示

数据请求

url = 'https://vd.l.qq.com/proxyhttp'
data = {"buid":"vinfoad","adparam":"pf=in&ad_type=ld%7ckb%7cpvl&pf_ex=pc&url=https%3a%2f%2fv.qq.com%2fx%2fcover%2fj3czmhisqin799r.html&refer=https%3a%2f%2fv.qq.com%2fx%2fsearch%2f&ty=web&plugin=1.0.0&v=3.5.57&coverid=j3czmhisqin799r&vid=z002615k57t&pt=&flowid=e9b3e49b2593efd194cbcd24030ed803_10201&vptag=www_baidu_com%7cvideo%3aposter_tle&pu=-1&chid=0&adaptor=2&dtype=1&live=0&resp_type=json&guid=4b4e192e83f4abaf8b68df3e4f5be769&req_type=1&from=0&appversion=1.0.166&uid=522810848&tkn=fbyfewdclktaaod_ogvcng..&lt=qq&platform=10201&opid=5fe180427a4c883f69cadded665ce99b&atkn=49c1a486316c8d269ac65aac080cfb29&appid=101483052&tpid=1&rfid=86c3f668da63d8bc7aab3fbc1eb7378a_1633763084","vinfoparam":"spsrt=1&charge=0&defaultfmt=auto&otype=ojson&guid=4b4e192e83f4abaf8b68df3e4f5be769&flowid=e9b3e49b2593efd194cbcd24030ed803_10201&platform=10201&sdtfrom=v1010&defnpayver=1&appver=3.5.57&host=v.qq.com&ehost=https%3a%2f%2fv.qq.com%2fx%2fcover%2fj3czmhisqin799r.html&refer=v.qq.com&sphttps=1&tm=1633767536&spwm=4&logintoken=%7b%22main_login%22%3a%22qq%22%2c%22openid%22%3a%225fe180427a4c883f69cadded665ce99b%22%2c%22appid%22%3a%22101483052%22%2c%22access_token%22%3a%2249c1a486316c8d269ac65aac080cfb29%22%2c%22vuserid%22%3a%22522810848%22%2c%22vusession%22%3a%22fbyfewdclktaaod_ogvcng..%22%7d&vid=z002615k57t&defn=fhd&fhdswitch=0&show1080p=1&ishls=1&dtype=3&sphls=2&spgzip=1&dlver=2&drm=32&hdcp=0&spau=1&spaudio=15&defsrc=2&encryptver=9.1&ckey=w5agxknj7n56kjeitzs_lpjx5wb4a2cds8keio8rvaqthezq1c_w6myj8hqxnmddg8erejdmljvm2vpbr-xe-uhvzyemy131vuh1h4pgcxe2ophm_h32jqtu2hfoqfa-un0svbkixyfwkodabnbluo4rgzsxkbhf3n3k7dnkpg_56x9jo3gwbmybeaex05x8sbbqky5axadvsm7hsbq8xeehziegjzlct94ongpyvsrkzqo51nvr_bs8h4-unlt0jg-obbyns2ijhrz4jubeugek8zaohe9htzpndvilriyt2mndud09qsllkl4xaj3ce6i26p6bryay1_qatijxkm9j1hs3zyc7dgymazd6be9ugx4hkzity-y8ccbppeebgsaj9w&fp2p=1&spadseg=3"}

headers = {
    'user-agent': 'mozilla/5.0 (windows nt 10.0; win64; x64) applewebkit/537.36 (khtml, like gecko) chrome/94.0.4606.71 safari/537.36'
}
response = requests.post(url=url, json=data, headers=headers)

提取数据

html_data = response.json()['vinfo']
# 正则表达式
m3u8_url = re.findall("url(.*?),", html_data)[3].split('"')[2]
m3u8_data = requests.get(url=m3u8_url).text
m3u8_data = re.sub('#extm3u', '', m3u8_data)
m3u8_data = re.sub('#ext-x-version:\d', '', m3u8_data)
m3u8_data = re.sub('#ext-x-media-sequence:\d', '', m3u8_data)
m3u8_data = re.sub('#ext-x-targetduration:\d+', '', m3u8_data)
m3u8_data = re.sub('#ext-x-playlist-type:vod', '', m3u8_data)
m3u8_data = re.sub('#extinf:\d+\.\d+,', '', m3u8_data)
m3u8_data = re.sub('#ext-x-endlist', '', m3u8_data).split()

遍历

for ts in tqdm(m3u8_data):
    ts_url = 'https://apd-57c5d150c8b9788baf40ea4f65feddf8.v.smtcdns.com/moviets.tc.qq.com/a2k4juw9atia8thdfq6y5hwruglqar4l5fk9kfbauei8/uwmrofz2r5xgoaqxgdgnc2df64gvtkzl5c_x6a3jovt0qib-/dovi4hwq0sqexpo_ylkyxvijdr9zz2vwewbcy7x70krnbvnpvbaotsjwfoq1uojotsrkj8r3372hratovg4vykoffvzjq2eemdpleiiytv0tb-c3czxmkzz-34hk4fc-r4mzk55l9w1rqjmpsvrorzr_sqpqvgzrrrq830get0nljgkeaq9sbg/' + ts
    ts_content = requests.get(url=ts_url).content

保存数据

with open('霸王别姬.mp4', mode='ab') as f:
    f.write(ts_content)
print('下载完成')

运行代码

Python爬虫小练习之爬取并分析腾讯视频m3u8格式

到此这篇关于python爬虫小练习之爬取并分析腾讯视频m3u8格式的文章就介绍到这了,更多相关python爬取腾讯视频内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!