【python】获取视频选集(每集)名字

获取视频选集【每集】名字

    • 0- 前言
    • 1- 操作
      • 1-0 判断是 视频选集 还是 订阅合集
      • 1-1 使用requests获取数据
      • 1-2 视频选集-思路
      • 1-3 订阅合集-思路
      • 1-4 视频选集-代码
      • 1-5 订阅合集-代码
    • 2- 实战演示【视频选集】
    • 3- 小结

0- 前言

常驻b站学习,一个视频几十集都是家常便饭

我的习惯用Word文档记笔记,因为Word的标题随便拖上拖下,改的时候比较方便。另外除非需要搭配代码的时候才用Typora

【下图是我的记笔记习惯,一般 笔记标题是 每集视频的名字】

在这里插入图片描述

偶然发现评论区 有位老哥把每集视频的标题发出来。一瞬间,我悟了!这不 每集视频的笔记标题这不就来了吗,干嘛还要手写!!!

但是,并不是每个视频都有这种好老哥,最终只能 靠自己动手了

1- 操作

1-0 判断是 视频选集 还是 订阅合集

这个是2023年11月新增的。
因为发现如果是订阅合集,获取数据的步骤就和视频选集不一样

订阅合集:
在这里插入图片描述

视频选集:
在这里插入图片描述

1-1 使用requests获取数据

1-2 视频选集-思路

requests.get 获取的源码跟看到的并太一样,需要的数据是在script里面的;看到是字典格式,本来想用 json ,奈何还是只菜鸡 失败了,最后只能用正则把数据挑出来了

在这里插入图片描述

在这里插入图片描述

1-3 订阅合集-思路

直接用requests获取的数据,跟用f12看到的差不多,所以获取方式就是正常流程

1-4 视频选集-代码


import requests
import re
from bs4 import BeautifulSoup

global url_title
# 创建正则表达式对象,表示规则
findLink = re.compile(r'"part":"(.*?)","duratio')


# 获取网页数据,传入参数:网址
def find_data(_url):
    get_url = requests.get(url=url)  # 此处不添加请求头,也可以正常获取
    # print(get_url.text)                                        # 查看获取网页的源码--测试用

    bs_html = BeautifulSoup(get_url.text, "html.parser")  # 用html.parser解析器

    global url_title
    url_title = bs_html.title.string  # 获取标题
    
    bs_find_data = bs_html.select('script')  # 获取标签树

    bs_data = ''

    # 筛选列表数据
    for __i in bs_find_data:
        bs_data = str(__i)
        if 'window.__INITIAL_STATE__={' in bs_data:
            # print(bs_data)                                     # 查看筛选的数据--测试用
            break

    # 正则查找,返回列表
    re_list = re.findall(findLink, bs_data)
    # print(re_list)                                             # 查看返回的列表--测试用

    return re_list


# 保存文件,传入参数:find_data() 返回的列表
def save(__video_list):
    file_title = str(url_title) + ".txt"  # 合成.txt格式 文件名
    name_file = open(file_title, "w", encoding="utf-8")  # 写入文件

    for __i in video_list:
        name_file.write(__i + "\n")

    name_file.close()


if __name__ == '__main__':
    url = '你的网址'
    video_list = find_data(url)

    # 遍历列表,查看每集名字
    for i in video_list:
        print(i)

    save(video_list)


1-5 订阅合集-代码

# -*- coding: utf-8 -*-

import requests
from bs4 import BeautifulSoup


# 获取每集视频的名字
def fin_data(_url):
    """
        获取每集视频的名字
    :param _url: 要爬取的网页链接
    :return:   网页标题, {每集的名字:每集的时长}
    """
    # 设置请求头信息
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.1774.50"
    }

    get_url = requests.get(url=_url, headers=headers)  # 此处不添加请求头,也可以正常爬取
    # print(get_url.text)                                        # 查看获取网页的源码--测试用

    soup1 = BeautifulSoup(get_url.text, "html.parser")  # 用html.parser解析器
    _url_title = soup1.title.string  # 获取标题
    a = soup1.findAll(name="div", attrs={"class": "video-episode-card"})  # 每集名字所在的div

    _video_dict = {}  # 存放每集的信息

    for ii in a:
        # print(i)
        # 获取每集的名字
        bv_title_ = ii.find(name="div", attrs={"class": "video-episode-card__info-title"})
        bv_title = bv_title_.get_text().replace('\n', '').replace(' ', '')

        # 获取每集的时长
        bv_time_ = ii.find(name="div", attrs={"class": "video-episode-card__info-duration"})
        bv_time = str(bv_time_.string).replace('\n', '').replace(' ', '')

        _video_dict[bv_title] = bv_time
        # print('-----------')

    # print(_bv_dict)
    return _url_title, _video_dict


# 保存文件
def save(_url_title, _video_dict):
    """
        保存文件
    :param _url_title: 网页标题
    :param _video_dict: {每集的名字:每集的时长}
    :return:
    """
    file_title = str(_url_title) + ".txt"  # 合成.txt格式 文件名
    name_file = open(file_title, "w", encoding="utf-8")  # 写入文件

    for ii in _video_dict:
        name_file.write(ii + "\n")

    name_file.close()


if __name__ == '__main__':
    url = '要爬取的网页'  # 要爬取的网页
    url_title, video_dict = fin_data(url)

    # 遍历列表
    for i in video_dict:
        print(i)

    save(url_title, video_dict)


2- 实战演示【视频选集】

使用比较简单,确认下是视频选集 还是 订阅合集,然后用对应的代码。
把网址地址填进去,运行就行,正常几秒就出来了

在这里插入图片描述

# ----输出结果----

序章
环境搭建和课程介绍
用Python设计第一个游戏
变量和字符串(上)
变量和字符串(下)
是时候讲讲代码了
改进我们的小游戏(上)
改进我们的小游戏(下)
数字类型(上)
数字类型(下)
布尔类型
短路逻辑和运算符优先级
谋定而后动,知止而有得(上)
谋定而后动,知止而有得(下)
了不起的分支和循环(I)
了不起的分支和循环(II)
了不起的分支和循环(III)
了不起的分支和循环(IV)
了不起的分支和循环(V)
列表(I)
列表(II)
列表(III)
列表(IV)
列表(V)
列表(VI)
列表(VII)
元组
字符串(I)
字符串(II)
字符串(III)
字符串(IV)
字符串(V)
字符串(VI)
序列(上)
序列(中)
序列(下)
字典(上)
字典(中)
字典(下)
集合(上)
集合(下)
函数(I)
函数(II)
函数(III)
函数(IV)
闭包 -- 函数(V)
装饰器 -- 函数(VI)
lambda表达式 -- 函数(VII)
生成器 -- 函数(VIII)

进程已结束,退出代码0

3- 小结

整体比较简单,每个人学习方式不一样,合理使用工具,增加学习的快乐,哈哈哈

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值