前言
嗨喽,大家好呐!这里是魔王~
环境使用:
- Python 3.8
- Pycharm
模块使用:
- import requests >>> pip install requests
内置模块 你安装好python环境就可以了
- import re
- import json
如果安装python第三方模块:
- win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
- 在pycharm中点击Terminal(终端) 输入安装命令
实现案例
一. 数据来源分析
采集数据内容, 要知道我们想要内容是来自哪里
- F12打开打开发者工具
- 刷新网页 让数据重新加载一遍
- 这个网站是一个m3u8内容
正常情况, 一个完整的内容
m3u8内容 会整个完整内容,分割成很多个小视频片段 一个ts文件 可能只有几秒钟的时间
所以我们得去找一个文件内容 包含我们所有ts文件内容
最好的搜索方式, 是根据ts文件url去搜索m3u8文件
请求获取网页源代码 就可以得到m3u8文件 >>> 所有片段就得到了 >>> 合成为一个整体的内容
二. 代码实现步骤:
发送请求, 对于播放详情页url地址发送请求
获取数据, 获取网页源代码
解析数据, 提取我们想要数据内容
发送请求, 对于m3u8文件url发送请求
获取数据, 获取服务器返回response响应数据
解析数据, 提取所有ts文件内容
保存数据, 保存内容到本地
代码
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的应用学习方向有哪些” />尾语
成功没有快车道,幸福没有高速路。
所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持
——励志语录
本文章就写完啦~感兴趣的小伙伴可以复制代码去试试
你们的支持是我最大的动力!!记得三连哦~ 欢迎大家阅读往期的文章呀