• Python获取 小黑子 弹幕数据+制作词云分析.........


    嗨害大家好鸭,我是小熊猫❤

    最近在小破站热门上看见了这个:

    在这里插入图片描述
    不得不说还是挺不一样的

    对吧?什么你说不是?

    哎呦~ 你干嘛 ~

    咳咳…话不多说,让我们一起来康康~

    源码、资料电子书点击这里

    基本开发环境💨

    • Python 3.6
    • Pycharm

    相关模块的使用💨

    • requests
    • re

    安装Python并添加到环境变量,
    pip安装需要的相关模块即可。


    一、💥明确需求

    在这里插入图片描述

    二、💥网页数据分析

    现在点击历史弹幕数据,同样是有数据加载出来,但是里面的都是乱码了。

    在这里插入图片描述

    请求这个链接还是会得到想要的数据内容。
    只需要使用正则表达匹配中文字符就可以匹配出来

    请添加图片描述


    三、💥解析数据并多页爬取

    弹幕分页是根据日期来的,当点击日期的使用,
    返回的给我的数据并不是弹幕数据,而是所有的日期。

    那么看到这里有人就会问了,
    那我想要爬取目标日期的弹幕数据怎么办?

    这两个的url地址是不一样的,
    seg.so 才是弹幕数据url地址。

    import requests
    import re
    
    
    def get_response(html_url):
        headers = {
            'cookie': '你自己的cookie',
            'origin': 'https://www.****',
            'referer': 'https://****/video/BV19E41197Kc',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
        }
        response = requests.get(url=html_url, headers=headers)
        return response
    
    
    def get_date(html_url):
        response = get_response(html_url)
        json_data = response.json()
        date = json_data['data']
        print(date)
        return date
        
    if __name__ == '__main__':
        one_url = 'https://api.****.com/x/v2/dm/history/index?type=1&oid=120004475&month=2021-01'
        get_date(one_url)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    返回的数据是json数据,
    根据字典键值对取值就可以得到相关数据。


    四、💥保存数据(数据持久化)

    def main(html_url):
        data = get_date(html_url)
        for date in data:
            url = f'https://****/x/v2/dm/web/history/seg.so?type=1&oid=120004475&date={date}'
            html_data = get_response(url).text
            result = re.findall(".*?([\u4E00-\u9FA5]+).*?", html_data)
            for i in result:
                with open('**弹幕.txt', mode='a', encoding='utf-8') as f:
                    f.write(i)
                    f.write('\n')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述
    请添加图片描述


    五、💥完整代码

    import requests
    import re
    
    
    def get_response(html_url):
        headers = {
            'cookie': '你自己的cookie',
            'origin': 'https://www.bilibili.com',
            'referer': 'https://www.bilibili.com/video/BV19E41197Kc',
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36',
        }
        response = requests.get(url=html_url, headers=headers)
        return response
    
    
    def get_date(html_url):
        response = get_response(html_url)
        json_data = response.json()
        date = json_data['data']
        print(date)
        return date
    
    
    def save(content):
        for i in content:
            with open('B站弹幕.txt', mode='a', encoding='utf-8') as f:
                f.write(i)
                f.write('\n')
                print(i)
    
    
    def main(html_url):
        data = get_date(html_url)
        for date in data:
            url = f'https://api.bilibili.com/x/v2/dm/web/history/seg.so?type=1&oid=120004475&date={date}'
            html_data = get_response(url).text
            result = re.findall(".*?([\u4E00-\u9FA5]+).*?", html_data)
            save(result)
    
    
    if __name__ == '__main__':
        one_url = 'https://api.bilibili.com/x/v2/dm/history/index?type=1&oid=120004475&month=2021-01'
        main(one_url)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43

    今天的文章就是这样啦

    我是小熊猫,咱下篇文章再见啦❤

    请添加图片描述

  • 相关阅读:
    vue+leaflet集成echarts实现动态轨迹图
    Vue3 - 什么是组合式 API?与选项式 API 有什么不同?(先从 Vue2 角度进行讲解,然后过渡到 Vue3)详细教程
    【嵌入式Linux】开发实践及补充杂文
    Zookeeper安装(单机、伪集群、多机集群)
    运营人的两大核心能力
    【深度强化学习环境配置】参考链接合集
    uni-app 从0 到 1 制作一个项目,收藏等于学会
    3D视觉基础整理 (一)
    MPLS隧道——跨域解决方案C1、C2讲解
    全志R128芯片应用开发案例——驱动 WS2812 流水灯
  • 原文地址:https://blog.csdn.net/m0_67575344/article/details/127653511