嗨喽,大家好呀~这里是爱看美女的茜茜呐
又到了学Python时刻~
Python 3.8
Pycharm
import requests >>> pip install requests
import re 正则表达式 解析数据
import json
安装python第三方模块:
win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
在pycharm中点击Terminal(终端) 输入安装命令
明确需求:
采集是什么网站
采集是什么数据
shipin内容
shipin标题
分析我们想要的数据内容, 是请求那个url地址可以得到的
通过开发者工具进行抓包分析
打开开发者工具: F12 或者 鼠标右键点击检查选择network
刷新网页
分析shipin内容在哪里?
shipin内容: m3u8视频格式
正常shipin: 2分09秒 整体
m3u8: 把整体内容, 分成N个片段 <单独ts文件>, 所有片段
获取内容 —> 获取所有ts文件<片段> —> 获取 m3u8 文件链接 —> 网页源代码里面
发送请求, 模拟浏览器对于url地址发送请求
获取数据, 获取网页源代码
解析数据, 提取我们想要的数据内容
标题
m3u8 文件链接
发送请求, 模拟浏览器对于url地址发送请求
m3u8 文件链接 发送请求
获取数据, 获取ts文件内容
解析数据, 提取我们想要的数据内容
所有ts文件链接 <视频片段>
保存数据, 所有片段保存下来, 然后合并成完整内容
导入模块
# 导入数据请求模块 --> 第三方模块, 需要安装 pip install requests
import requests
# 导入正则模块 --> 内置模块 不需要安装
import re
# 导入json模块 --> 内置模块 不需要安装
import json
# 导入格式化输出模块 --> 内置模块 不需要安装
from pprint import pprint
“”"
1. 发送请求, 模拟浏览器对于url地址发送请求
在开发者工具里面进行复制粘贴
“”"
请求链接
PS:本篇完整源码如有需要的小伙伴可以加下方的群去找管理员免费领取
伪装模拟
headers = {
# user-agent 用户代理, 表示浏览器基本身份信息
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
}
发送请求
调用requests模块里面get请求方法, 对于url地址发送请求, 并且携带上headers请求头伪装, 最后用自定义变量response接收返回数据
response = requests.get(url=url, headers=headers)
print(response)
“”"
2. 获取数据, 获取网页源代码
response.text 获取响应文本数据
3. 解析数据, 提取我们想要的数据内容
视频标题
m3u8 文件链接
正则表达式 re
“”"
提取视频标题
title = re.findall('"title":"(.*?)",', response.text)[1]
提取m3u8文件链接
html_data = re.findall('window.pageInfo = window.videoInfo = (.*?);', response.text)[0]
转成字典数据类型 type() 内置函数, 查看数据类型
json_data = json.loads(html_data)
键值对取值 --> 根据冒号左边的内容[键], 提取冒号右边的内容[值]
m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['backupUrl'][0]
print(title)
print(m3u8_url)
“”"
4. 发送请求, 模拟浏览器对于url地址发送请求
m3u8 文件链接 发送请求
5. 获取数据, 获取ts文件内容
6. 解析数据, 提取我们想要的数据内容
所有ts文件链接 <视频片段>
提取所有ts文件
删除掉所有我们不要的
“”"
m3u8_data = requests.get(url=m3u8_url, headers=headers).text
把什么内容,替换成什么,从什么地方替换 split() 分割成列表
m3u8_data = re.sub('#E.*', '', m3u8_data).split()
for循环遍历, 把列表里面元素一个一个提取出来
for ts in m3u8_data:
字符串拼接, 构建完整
“”"
7. 保存数据, 所有视频片段保存下来, 然后合并成完整视频内容
发送请求, 获取数据内容
然后再进行保存
“”"
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)
感谢你观看我的文章呐~本次航班到这里就结束啦
希望本篇文章有对你带来帮助 ,有学习到一点知识~
躲起来的星星也在努力发光,你也要努力加油(让我们一起努力叭)。
最后,博主要一下你们的三连呀(点赞、评论、收藏),不要钱的还是可以搞一搞的嘛~
不知道评论啥的,即使扣个6666也是对博主的鼓舞吖 感谢