python超细致带你批量保存B站美女内容~ 快来观赏叭

2022-06-17  本文已影响0人  颜狗一只

前言

嗨喽!大家好,这里是魔王呐~

在昨天,我快乐刷刷刷得时候,有幸刷到一个非常好看得内容

于是我就点开UP主得主页打算把她得内容全部保存下来,慢慢欣赏~

现在,我把代码分享给大家,毕竟,好东西得互相分享,对不~


首先,我们得做好准备步骤,尽量跟我得一致哦~

环境使用:


模块使用:

内置模块 你安装好python环境就可以了


如果安装python第三方模块:

  1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车
  2. 在pycharm中点击Terminal(终端) 输入安装命令

如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)
  2. 点击齿轮, 选择add
  3. 添加python安装路径

pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)
  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese
  3. 选择相应的插件点击 install(安装) 即可
  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效

Python的应用学习方向有哪些?

这里稍微介绍一下,让你对python有更详细得认知~

网站开发:

如目前优秀的全栈的 django、框架flask ,都继承了python简单、明确的风格,开发效率高、易维护,与自动化运维结合性好。

python已经成为自动化运维平台领域的事实标准;

爬虫程序

在爬虫领域,Python几乎是霸主地位,将网络一切数据作为资源,通过自动化程序进行有针对性的数据采集以及处理。

从事该领域应学习爬虫策略、高性能异步IO、分布式爬虫等,并针对Scrapy框架源码进行深入剖析,从而理解其原理并实现自定义爬虫框架。

数据分析

Python语言相对于其它解释性语言最大的特点是其庞大而活跃的科学计算生态,在数据分析、交互、可视化方面有相当完善和优秀的库.

自动化脚本

执行许多重复的任务,例如阅读 pdf、播放音乐、查看天气、打开书签、清理文件夹等等,使用自动化脚本

就无需手动一次又一次地完成这些任务,非常方便。

人工智能

各种人工智能算法都基于Python编写,尤其PyTorch之后,Python作为AI时代头牌语言的位置基本确定。

游戏开发/辅助 自动化测试 运维

思路流程: <通用>

一. 数据来源分析

  1. 确定我们需求 采集什么网站上面的什么数据内容

  2. 分析我们想要视频数据以及视频标题内容 -->> 可以请求那个网址得到相应数据内容

  3. B站视频内容, 是可以在网页源代码有的 搜索playinfo就有相关数据... 通过开发者工具抓包分析

二. 代码实现步骤

  1. 发送请求, 对于视频播放页面url地址发送请求 https://www.bilibili.com/video/BV11R4y1L7Fc

  2. 获取数据, 获取网页源代码 <有很多数据内容>

  3. 解析数据, 提取我们想要数据内容

  4. 保存数据, 可以把视频内容保存本地文件夹

代码

因审核原因,我把网址删掉了,小可耐们可以自己补全哦,也可私信找我领取完整源码呐~💞

代码大部分我都有写注释,希望对你们有帮助哦~


一、导入模块

import os
# 导入数据请求模块  <使用请求工具去发送请求>
import requests
# 导入正则模块
import re
# 导入json
import json
# 导入格式化输出模块
import pprint
# 导入进程模块
import subprocess
import threading

二、对视频播放页面url地址发送请求

def get_video_content(bv_id):
    """
        爬虫 模拟浏览器对于url地址发送请求...
    """
    url = f'{bv_id}'  # 确定网址, 确定自己要网址是那个
    #  headers请求头, 用来伪装python代码, 防止被服务器识别出来是你爬虫程序.... user-agent 用户代理 表示浏览器基本身份标识
    #  通过requests模块里面get请求方法<函数>对于url地址发送请求...  等号左边的都是自定义变量 不能以数字开头  不建议使用关键词命名
    # 有颜色url是函数参数 关键字传参
    response = requests.get(url=url, headers=headers)  # <Response [200]> 响应对象 200状态码表示请求成功
    print(response)

三、 获取数据

    # 获取网页源代码 <有很多数据内容>
    # print(response.text)  # response.text 获取响应对象文本数据 >>> 字符串数据

四、解析网站

    """
    提取我们想要数据内容  re css xpath 建议都要学习, 选择最适合用的
    re.findall('"title":"(.*?)",', response.text)
    使用re模块里面findall<找到所有>方法 从什么地方去找什么数据
        从response.text 里面去找 "title":"(.*?)", 其中 (.*?) 这段是我们想要数据
    正则匹配提取出来数据, 返回列表数据 [0] 根据索引位置取值, 在python里面索引位置是从0开始计数
       程序员本质 cv工程师...   IT薪资高, 高植发...
       
       如果你想要就业 去面试的时候 理光头..... 薪资多开5K 
       
    """
    title = re.findall('"title":"(.*?)",', response.text)[0]
    # 前端小知识点 前端标签两个两个一起 response.text 字符串类型
    html_data = re.findall('<script>window.__playinfo__=(.*?)</script>', response.text)[0]  # 获取视频信息 也是复制
    # print(html_data)
    # print(type(html_data))  # <class 'str'>  type() 查看数据类型
    json_data = json.loads(html_data)  # 转数据类型
    # print(json_data)
    # print(type(json_data))  # <class 'dict'> 字典数据类型, 字典取值 不会5 会6 根据冒号左边的内容, 提取冒号右边内容
    # pprint.pprint(json_data)
    # print(json_data['code'])
    audio_url = json_data['data']['dash']['audio'][0]['baseUrl']
    video_url = json_data['data']['dash']['video'][0]['baseUrl']
    print(audio_url)
    print(video_url)
    print(title)

五、保存数据

    # 图片 视频 音频 特定格式文件 都获取二进制数据进行保存
    # audio_content = requests.get(url=audio_url, headers=headers).content  # response.content 获取二进制数据内容
    # video_content = requests.get(url=video_url, headers=headers).content  # response.content 获取二进制数据内容
    # with open('video\\' + title + '.mp3', mode='wb') as f:
    #     f.write(audio_content)
    # with open('video\\' + title + '.mp4', mode='wb') as f:
    #     f.write(video_content)
    #
    # cmd = f"ffmpeg -i video\\{title}.mp4 -i video\\{title}.mp3 -c:v copy -c:a aac -strict experimental video\\{title}output.mp4"
    # subprocess.run(cmd, shell=True)
    # os.remove(f'video\\{title}.mp4')
    # os.remove(f'video\\{title}.mp3')


for page in range(1, 13):
    print(f'正在采集第{page}页数据内容')
    link = f'/x/space/arc/search?mid=1305006386&ps=30&tid=0&pn={page}&keyword=&order=pubdate&jsonp=jsonp'
    headers = {
        'Referer': '',
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.0.0 Safari/537.36'
    }
    """
    response.text  获取文本
    response.content 获取二进制
    response.json()  获取json字典数据
    m3u8 
    """
    resp_json = requests.get(url=link, headers=headers).json()
    for index in resp_json['data']['list']['vlist']:
        bv_id = index['bvid']
        print(bv_id)

尾语

成功没有快车道,幸福没有高速路。

所有的成功,都来自不倦地努力和奔跑,所有的幸福都来自平凡的奋斗和坚持

——励志语录

本文章就写完啦~感兴趣的小伙伴可以复制代码去试试

你们的支持是我最大的动力!!记得三连哦~ 💕 欢迎大家阅读往期的文章呀~

上一篇下一篇

猜你喜欢

热点阅读