最近某牙上又出现一批高质量视频,听说删的很快,还好我会Python,赶紧采集下来保存!
准备工作
环境使用
Python 3.10 解释器
Pycharm 编辑器
模块使用
requests >>> 数据请求模块
re <正则表达式模块>
os <文件操作模块>
为了让大家彻底学会本案例,小编特地熬夜加班录制了视频讲解, 跟代码一起打包好了,直接文末名片自取,点击直达文末。
爬虫实现基本流程
一、数据来源分析
1.明确需求
明确采集的网站以及数据内容
- 网址: https://***/video/play/994633970.html
- 数据: 视频标题 / 视频链接
2.抓包分析
通过浏览器开发者工具分析对应数据位置
- 打开开发者工具
F12 / 右键点击检查选择network 网络面板 - 刷新网页
- 通过关键字搜索找到对应数据位置
关键字: 需要什么数据就搜什么数据
1.先找视频链接
-开发者工具 -> 网络 -> 媒体 -> 查看对应视频链接 ×
-开发者工具 -> 网络 -> 全部 -> 是否存在某些链接 xx.ts -> 说明m3u8流媒体文件
2.关键字: m3u8进行数据搜索查询
数据包地址: https://****/moment/getMomentContent?callback=jQuery1124092 55698284796892_1720872611286&videoId=994633970&uid=1259519996193&_=172087261129
2
二、代码实现步骤
1.发送请求
模拟浏览器对于url地址发送请求
# 导入数据请求模块 import requests """发送请求"""
# 模拟浏览器 -> 复制请求标头参数(字典)
headers = {
# User-Agent 用户代理, 表示浏览器基本身份信息
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36'
}
# 请求网址 -> 复制刚刚抓包分析找到链接地址
url = 'https://****/moment/getMomentContent? callback=jQuery112409255698284796892_1720872611286&videoId=994633970&uid=1259519 996193&_=1720872611292'
# 发送请求 -> 导入数据请求模块, 使用浏览器所示请求方法传入相关参数即可
response = requests.get(url=url, headers=headers)
2.获取数据
获取服务器返回响应数据
response.text
- 获取响应的文本数据
response.json()
- 获取响应的json数据
必须是完整的json数据格式
response.content
- 获取响应的二进制数据
3.解析数据
提取我们需要的数据内容
# 提取视频标题
title = json_data['data']['moment']['title']
# 提取视频链接
video_url = json_data['data']['moment']['videoInfo']['definitions'][0]['url']
print(title, video_url)
4.保存数据
获取视频内容, 保存本地文件夹。
# 获取视频内容
video_content = requests.get(url=video_url, headers=headers).content
# 保存数据
with open('video\\' + title + '.mp4', mode='wb') as f:
# 写入数据
f.write(video_content)
效果