当前位置:   article > 正文

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

bili爬取弹幕

#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">刘亦菲情商好高啊</d><d
    danmu_lists = re.findall('p=".*?">(.*?)</d><d',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
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号