项目二、视频网站小姐姐视频获取

246 阅读2分钟

一、数据来源分析

1.明确需求

明确采集的网站以及数据内容

2.抓包分析

  • 开发者工具
  • 刷新网页
  • 关键字查找对应数据

正常视频网站

1. 开发者工具 ————》 网络 ————》媒体 ————》查看对应视频链接地址
2.以链接一段参数进行搜索 ————》分析视频链接所在

image.png m3u8流媒体

image.png




image.png

在流媒体文件中查找到视频标题,请求网址为www.acfun.cn/v/ac3656470… image.png

二、代码

import requests

import re

import json

from pprint import pprint

# 导入进度条模块
from tqdm import tqdm

# 模拟浏览器
headers = {
    'user-agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0'
}


# 请求网址
url = 'https://www.acfun.cn/v/ac36564705'

# 发送请求
response = requests.get(url = url, headers=headers)

# 获取数据

html  = response.text
# 响应的文本数据

# re.findall(r'<h1 class="title"><span>《****》第二十九天。***视角。</span></h1>')
# 提取标题
title = re.findall(r'<h1 class="title"><span>(.*?)</span></h1>',html)[0]
#print(title)

#  提取视频信息
info = re.findall(r'window.videoInfo = (.*?);',html)[0]

# 将json字符串转换json字典
json_data = json.loads(info)

#pprint(json_data)

# 提取m3u8链接地址

m3u8_url = json.loads(json_data['currentVideoInfo']['ksPlayJson'])['adaptationSet'][0]['representation'][0]['url']
#pprint(m3u8_url)

# 对于m3u8链接发送请求,获取文本数据
m3u8 = requests.get(url = m3u8_url, headers=headers).text

# 提取ts片段

ts_list = re.findall(',\n(.*?)\n#',m3u8)
#print(ts_list)

print('开始下载视频',title)
# 循环遍历,提取元素
for ts in tqdm(ts_list):
    # 拼接ts片段的完整链接
    ts_url = 'https://ali-safety-video.acfun.cn/mediacloud/acfun/acfun_video/' + ts
    # 发送请求,获取ts片段
    #print(ts_url)
    # 获取视频片段内容
    ts_content = requests.get(url = ts_url, headers=headers).content

    # 保存视频片段
    with open(r'D:\learn\爬取小姐姐视频\video' + title  + '.mp4','ab') as f:
        f.write(ts_content)

三、总结

爬取数据内容,只可以爬取单个视频,想要获取更多需要将其他网页内容页获取,后续继续补充代码。