手把手带你从零基础抓取A站短视频,并且制作从动态壁纸,这些小姐姐我全都要!

112 阅读2分钟

重点学习内容


  1. lxml的使用

  2. m3u8文件处理

  3. ts文件合成MP4

项目思路解析


通过xpath方式提取分类之后的首页数据

获取到每个视频的vacid

拼接进入详情页面的url地址

在这里插入图片描述

www.acfun.cn/{}

请求详情页面

获取网页源代码的backupUrl的对应的值

请求对应的m3u8的文件地址

tx-safety-video.acfun.cn/mediacloud/…

在这里插入图片描述

请求m3u8的文件地址

解析对应的m3u8文件

在这里插入图片描述

视频数据是ts视频拼接起来的

取出m3u8文件里面的每个ts的下载地址

拼接成新的视频下载地址

ali-safety-video.acfun.cn/mediacloud/…

下载对应的ts视频数据

将每个ts数据以追加的形式写入到MP4的文件里

简易源码分析


import requests

import re

from tqdm import tqdm

from lxml import etree

import os

def request_data(url):

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.72 Safari/537.36 Edg/90.0.818.42'

}

response = requests.get(url, headers=headers)

return response

def save(name, video):

path = f'{name}\'

if not os.path.exists("视频"):

os.makedirs("视频")

with open("视频/" + name + '.mp4', mode='ab') as f:

f.write(video)

start_url = "www.acfun.cn/v/list218/i…"

res = request_data(start_url)

html_data = etree.HTML(res.text)

acid_list = html_data.xpath('//div[@class="list-content-item"]/a[1]/@href')

ac = input('输入acid:')

for ac in acid_list:

url = 'www.acfun.com{}'.format(ac)

print(url)

请求页面地址 获取到 m3u8地址

data = request_data(url).text

m3u8_url = re.findall('backupUrl(.*?)"]', data)[0].replace('"', '').split('\')[-2]

title = re.findall('"title":"(.*?)"', data)[0]

请求m3u8地址

m3u8_data = request_data(m3u8_url).text

数据替换

m3u8_data = re.sub(r'#EXTM3U', "", m3u8_data)

m3u8_data = re.sub(r'#EXT-X-VERSION:\d', "", m3u8_data)

m3u8_data = re.sub(r'#EXT-X-TARGETDURATION:\d', "", m3u8_data)

m3u8_data = re.sub(r'#EXT-X-MEDIA-SEQUENCE:\d', "", m3u8_data)

m3u8_data = re.sub(r'#EXTINF:\d.\d,', "", m3u8_data)

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。

分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习

了解详情:docs.qq.com/doc/DSnl3ZG…