前言

嗨喽,大家好呐!这里是魔王~

环境使用:

  • Python 3.8
  • Pycharm

模块使用:

  • import requests >>> pip install requests

内置模块 你安装好python环境就可以了

  • import re
  • import json

如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

实现案例

一. 数据来源分析

采集数据内容, 要知道我们想要内容是来自哪里

  1. F12打开打开发者工具
  2. 刷新网页 让数据重新加载一遍
  3. 这个网站是一个m3u8内容

正常情况, 一个完整的内容

m3u8内容 会整个完整内容,分割成很多个小视频片段 一个ts文件 可能只有几秒钟的时间

所以我们得去找一个文件内容 包含我们所有ts文件内容

最好的搜索方式, 是根据ts文件url去搜索m3u8文件

请求获取网页源代码 就可以得到m3u8文件 >>> 所有片段就得到了 >>> 合成为一个整体的内容

二. 代码实现步骤:

  1. 发送请求, 对于播放详情页url地址发送请求

  2. 获取数据, 获取网页源代码

  3. 解析数据, 提取我们想要数据内容

  4. 发送请求, 对于m3u8文件url发送请求

  5. 获取数据, 获取服务器返回response响应数据

  6. 解析数据, 提取所有ts文件内容

  7. 保存数据, 保存内容到本地

代码

import timeimport requests# 数据请求模块import re# 正则表达式模块import jsonimport pprintfor page in range(3, 29):print(f'正在采集第{page}页的数据')time.sleep(1)link = 'https://www.acfun.cn/u/29946310'data = {'quickViewId': 'ac-space-video-list','reqID': page+1,'ajaxpipe': '1','type': 'video','order': 'newest','page': page,'pageSize': '20','t': '1653659024877',}headers = {'referer': 'https://www.acfun.cn/u/29946310','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}response = requests.get(url=link, params=data, headers=headers)# pprint.pprint(response.text)ac_id_list = re.findall('atomid.*" />, response.text)print(ac_id_list)for ac_id in ac_id_list:url = f'https://www.acfun.cn/v/ac{ac_id}'headers = {源码、解答、资料加Q裙:261823976'referer': f'https://www.acfun.cn/u/{ac_id}','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36'}response = requests.get(url=url, headers=headers)title = re.findall('(.*?) - AcFun弹幕视频网 - 认真你就输啦 \(\?ω\?\)ノ- \( ゜- ゜\)つロ', response.text)[0]html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]json_data = json.loads(html_data)m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]m3u8_data = requests.get(url=m3u8_url, headers=headers).textm3u8_data = re.sub('#E.*', '', m3u8_data).split()print(title)print(m3u8_url)# for ts in m3u8_data:# ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts# ts_content = requests.get(url=ts_url, headers=headers).content# with open('video\\' + title + '.mp4', mode='ab') as f:# f.write(ts_content)# print(ts_url)


Python的应用学习方向有哪些” />

尾语

成功没有快车道,幸福没有高速路。

所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持

——励志语录

本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~ 欢迎大家阅读往期的文章呀