• Python爬虫教程12:从b站获取神仙姐姐的视频弹幕内容


    #1. 随便在b站找个测试视频的地址,然后把网址在bilibili前面加一个 i 访问后,就可以看到跳转后的弹幕地址了,https://www.ibilibili.com/…,如下所示,你也可以通过下方,我分享的源码中get_danmu_url(url):我写的函数(传一个参数视频地址即可),来得到转化后的弹幕地址,这样就不用手动查看转化了。

    #我的Python教程
    #官方微信公众号:wdPython
    
    • 1
    • 2

    在这里插入图片描述

    2.刘亦菲弹幕获取好的效果(弹幕很多,下面发的是部分)

    那是因为是你

    看多少次都会笑死的地步

    “现在放下了”,后续老刘买了一件古驰外套送给导演了

    刘亦菲,LV路易威登和宝格丽双顶奢全球代言人,无所谓大家的恨

    我觉得她是intp有种冷幽默感

    就喜欢黑宝宝们上蹿下跳发疯的样子

    这里刘涛特别照顾刘亦菲

    耿直girl

    有时候回答记者问题就是要绕弯子 有技巧的

    别围棋少女了,粉圈有几个看过的?只会跟风黑

    突然发现她说话语气和风格和孙一宁好像

    人家不是笨蛋是大智若愚

    在这里插入图片描述

    import requests
    import re
    import parsel
    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
    }
    
    #测试视频网址 https://www.bilibili.com/video/BV1Ts4y1p7Vc/?spm_id_from=333.337.search-card.all.click
    def get_middletext(content,start_content,end_content):
        '''
        知道前面和后面的文本,取出中间的文本
        例如我的Python教程,我的和教程的中间文本就是Python
        '''
        start_index = content.index(start_content) + len(start_content)
        end_index = content.index(end_content)
        middle_text = content[start_index : end_index]
        return middle_text
    
    #1.通过原网址,找到弹幕视频的网址
    def get_danmu_url(url):
        url='https://www.bilibili.com/video/BV1Ts4y1p7Vc/?spm_id_from=333.337.search-card.all.click'
        new_url = url.replace("//www.", "//www.i")
        web_data = requests.get(new_url, headers=headers).text
        selector = parsel.Selector(web_data)
        danmu_url=selector.xpath('.//div[@class="input-group"][5]/input').get()
        danmu_url=get_middletext(danmu_url, 'value="', '" class', ).strip()
        print('解析后的弹幕地址:',danmu_url)
        return danmu_url
    
    if __name__ == '__main__':
        #这是一个测试的B站视频地址
        video_url = get_danmu_url('https://www.bilibili.com/video/BV1Ts4y1p7Vc/?spm_id_from=333.337.search-card.all.click')
        response = requests.get(url=video_url,headers=headers)
        response.encoding = 'UTF-8'
        #print(response.text)
        #p="290.78000,1,25,16777215,1692205108,0,689b568b,1385075854249679616,10">刘亦菲情商好高啊
        danmu_lists = re.findall('p=".*?">(.*?),response.text)
        danmu_content = '\n'.join(danmu_lists)
        print(danmu_content)
    
    • 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
  • 相关阅读:
    C#策略模式、策略与简单工厂结合模式——商场收银系统
    在CentOS装个RocketMQ 然后用JAVA操作吧
    23062QTday1
    VirtualBox VMs 扩展磁盘空间
    机械设备制造企业如何借助ERP系统,解决成本核算难题?
    【无人机】基于球向量的粒子群优化(SPSO)算法在无人机路径规划中的实现(Matlab代码实现)
    数据结构—快速排序(续)
    TSINGSEE青犀智能分析网关V4有限空间作业监护AI算法介绍及应用
    【unity小技巧】unity事件系统创建通用的对象交互的功能
    Nginx Note03——异步非阻塞机制
  • 原文地址:https://blog.csdn.net/gxz888/article/details/133269822