Python 笔记(二) 采集保存某牙视频

# 采集某牙视频
# 代码原理
# 1.发送请求,获取数据
# 2.解析数据,保存数据

# 多个视频采集 分析url变化规律
# 通过视频ID来下载,就可以获取所有视频内容 《ID 一般出现在 列表页面》

# -*- coding: utf-8 -*-
import csv
import re
from time import time

import parsel
import requests

# 采集取虎牙视频
from pip._vendor.rich import json


# 代码原理
# 1.发送请求,获取数据
# 2.解析数据,保存数据

# 多个视频采集 分析url变化规律
# 通过视频ID来下载,就可以获取所有视频内容 《ID 一般出现在 列表页面》


def main():
    start = time()

    # 多视频列表
    urls = 'https:/****ya.com/g/Dance_new_51'

    # 单视频链接
    url = 'https:/****uya.com/moment/getMomentContent?callback=jQuery1124020964233777258934_1653215833592&videoId=715239603&uid=&_=1653215833600'

    headers = {
        # 浏览器基本信息
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.93 Safari/537.36'
    }

    # 通过多视频列表采集到ID
    response = requests.get(url=urls, headers=headers)
    # print(response.text)

    # 通过正则找数据 \d+ 表示匹配一个或多个数字
    video_id_list = re.findall('<li data-vid="(\d+)">', response.text)
    print(video_id_list)

    for video_id in video_id_list:
        url = f'https:/****ya.com/moment/getMomentContent?callback=jQuery1124020964233777258934_1653215833592&videoId={video_id}&uid=&_=1653215833600'
        fetchOneVideo(headers, url, video_id)


    # fetchOneVideo(headers, url)

    end = time()
    print('总共耗费了%.2f秒.' % (end - start))


def fetchOneVideo(headers, url, id):
    # 1.发送请求
    response = requests.get(url=url, headers=headers)
    jstr = json.loads(response.text.split('(')[1][:-1])
    # <Response [200]>:请求成功
    # 2. 获取数据
    # print(jstr)
    title = jstr['data']['moment']['title']
    video_url = jstr['data']['moment']['videoInfo']['definitions'][0]['url']

    print(title)
    print(video_url)

    # 3. 请求视频二进制数据,保存数据
    video_content = requests.get(url=video_url, headers=headers).content
    with open(id + title + '.mp4', mode='wb') as f:
        f.write(video_content)
        print(title, '保存成功')


# 采集虎牙视频。
if __name__ == '__main__':
    main()

采集保存某牙视频

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值