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

news/2024/11/8 18:47:59/

大家好,我是辣条。

我知道大家都是冲着学技术来的,肯定不是为了那些好看的小姐姐进来的,所以直接进入主题吧。

在这里插入图片描述

A站视频数据采集

    • 采集数据目标
    • 效果展示
    • 工具使用
    • 重点学习内容
    • 项目思路解析
    • 简易源码分析

采集数据目标

网址:A站
在这里插入图片描述

效果展示

在这里插入图片描述

工具使用

开发环境:win10、python3.7
开发工具:pycharm、Chrome
工具包:requests、docx,lxml

重点学习内容

  1. lxml的使用
  2. m3u8文件处理
  3. ts文件合成MP4

项目思路解析

通过xpath方式提取分类之后的首页数据
获取到每个视频的vacid
拼接进入详情页面的url地址
在这里插入图片描述

https://www.acfun.cn/{}

请求详情页面
获取网页源代码的backupUrl的对应的值
请求对应的m3u8的文件地址

https://tx-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/b6f3561527ea7674-4c05d717a155db2cd75c5e3455bcc285-hls_4k_h264_1.m3u8?pkey=ABCVjggV-526Eqfc2aQQzGQs8FaP_JPEFMV8eoqWKXmTZNXICw3L3XRSv0vwV-O7fLtKIhIyZzMNqkxhT_7BJ8X0gLmIuej3RM1T37Wg7iIGLBDUcMNB27vJ8DIX0F2_QAyLKZ7DGb4h7C_7MvCIy1arBJWk0OVyDm5Gvn7iS1clxQbLPd9N1J-yRHeuoMAQ-bF-cQca4Dpi0jz2XSyxAqvj1U-kNkybrP2xBwTxT1gG5CRLcOu0uBvjVryvdLm_bwQ&safety_id=AAKL9ykXaHfy4Hgj44E9P_hc\%22],\%22codecs\%22:\%22avc1.640033,mp4a.40.2\%22,\%22hidden\%22:false,\%22disableAdaptive\%22:false,\%22comment\%22:\%22b6f3561527ea7674/HLS_4K_H264_1\%22,\%22id\%22:1,\%22url\%22:\%22https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/b6f3561527ea7674-4c05d717a155db2cd75c5e3455bcc285-hls_4k_h264_1.m3u8?pkey=ABCVjggV-526Eqfc2aQQzGQs8FaP_JPEFMV8eoqWKXmTZAnICSBGjLT_PyFsslJJXiOP2eQEO--qVGdx3RAVv2u-HzgG2V3aGkpXflsVIfuLURk-uyEAGOvuDvQoIX64vgGt9w5oTxJ1X_6LoiSXl2Z-7Kb5ytDpExAACRaRMSOqDcxaB-Q9niMjCa9yuAs40UKwxyIzZdmKyRjL2GRFwBqH0CjM9ZKxkjmQ7nuTn4bfnFyWP2LIrkeW6RDFLuG1mgc&safety_id=AAKL9ykXaHfy4Hgj44E9P_hc

在这里插入图片描述
请求m3u8的文件地址
解析对应的m3u8文件
在这里插入图片描述
视频数据是ts视频拼接起来的
取出m3u8文件里面的每个ts的下载地址
拼接成新的视频下载地址

https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/hls/b6f3561527ea7674-723550b3c6b1ff9a4b05be736acd7098-hls_720p_2.00000.ts?pkey=ABClqkBWwxUgoTqPKsnjoZ5X2vsyNNN9F0mDGRhhZMiyRUZkfurznShxCBqmWZWTtj2M2zCGcFwL-F30xT89BkrNoA4QT7yBQ9q4sjyRJpmBrVqcd2vQHWZhjTzkUsPY2hQuWtSoYHBrWJbqTgNbWVF-k0vjXxbDsN311gKd358IpcQnTvboQDX1wOKspWfm_OHyXMkPJqdCulUQ6wVBA6i5kE9RGNnVVgyFKxbRzPiKzyKfCnzYo6x723CCbbRNnBM&safety_id=AAKL9ykXaHfy4Hgj44E9P_hc

下载对应的ts视频数据
将每个ts数据以追加的形式写入到MP4的文件里

简易源码分析

import requests
import re
from tqdm import tqdm
from lxml import etree
import osdef 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 responsedef 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 = "https://www.acfun.cn/v/list218/index.htm"
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 = 'https://www.acfun.com{}'.format(ac)print(url)# 请求页面地址 获取到 m3u8地址data = request_data(url).textm3u8_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)m3u8_data = re.sub(r'#EXT-X-ENDLIST', "", m3u8_data)m3u8 = m3u8_data.split()for i in tqdm(m3u8):ts_url = 'https://tx-safe-video.acfun.cn/mediacloud/acfun/acfun_video/hls/' + ivideo = request_data(ts_url).contentsave(title, video)

对你有帮助的话,记得给辣条三连哦


http://www.ppmy.cn/news/637746.html

相关文章

Java调用scala中map转换问题处理

网上代码 把Javamap转为scala的map代码 scala.collection.mutable.Map<String, String> scalaMap JavaConverters.mapAsScalaMapConverter(map).asScala();Object objMap Map$.MODULE$.<String, String>newBuilder().$plus$plus$eq(scalaMap.toSeq());Object Bui…

Win11转移conda环境——从C盘转移到D盘

原本就是将Anaconda安装到了C盘&#xff0c;结果发现环境他还是默认安装到了C盘&#xff0c;就打算再转移一下 conda版本为 首先找到Win11下面的环境位置 C:\Users\用户名\.conda\envs比如我的就是 C:\Users\Arona\.conda\envs找到D盘安装Anaconda的位置 D:\ProgramData\an…

【前端面试必读】w3c标准是什么?

web标准简单来说可以分为结构、表现和行为 结构 主要是有HTML标签组成 表现 即指css样式表 行为 主要是有js、dom组成 web标准一般是将该三部分独立分开&#xff0c;使其更具有模块化。但一般产生行为时&#xff0c;就会有结构或者表现的变化&#xff0c;也使这三者的界限并不那…

两个实用型教学网站:菜鸟教程与W3School,估计是国内做得做好的了

1、菜鸟教程 这是个非常的基础的在线教育网站&#xff0c;很经典的教程&#xff0c;分类明确&#xff0c;强烈推荐收藏。 2、W3School 学WEB开发&#xff0c;结合w3school学习前端&#xff0c;开发时&#xff0c;核心是语法方向的。很赞。

WEB标准和W3C标准是什么

标签闭合标签小写嵌套正确外部链接css和js提倡结构、表现和行为相分离&#xff08;HTML结构、CSS表现、JavaScript行为&#xff09;

理解W3C是干什么的

W3C是指万维网联盟&#xff08;world wide web consortium&#xff09;;它是一个会员组织&#xff0c;其工作是对web进行标准化&#xff1b;W3C创建并维护WWW标准W3C标准不是某一个标准&#xff0c;而是一系列标准的集合。网页主要由三部分组成&#xff1a;结构 &#xff08;St…

【综合类型第 16 篇】W3School 离线手册最新版下载

这是【综合类型第 16 篇】&#xff0c;如果觉得有用的话&#xff0c;欢迎关注专栏。 话不多说&#xff0c;今天分享一个 W3School 离线手册的最新版&#xff0c;如下图所示 图一&#xff08;Windows 截图&#xff09; 图二&#xff08;Mac 截图&#xff09; 下载解压前后图…

W3C代码标准规范--

一&#xff1a;什么是W3C&#xff1f; W3C标准 万维网联盟标准。万维网联盟&#xff08;外语缩写&#xff1a;W3C&#xff09;标准不是某一个标准&#xff0c;而是一系列标准的集合。网页主要由三部分组成&#xff1a;结构&#xff08;Structure&#xff09;、表现&#xff0…