Py学习  »  Python

用Python爬取B站视频弹幕

小蚊子数据分析 • 4 年前 • 562 次点击  

via:菜J学Python

众所周知,弹幕,即在网络上观看视频时弹出的评论性字幕。不知道大家看视频的时候会不会点开弹幕,于我而言,弹幕是视频内容的良好补充,是一个组织良好的评论序列。通过分析弹幕,我们可以快速洞察广大观众对于视频的看法。 


下面是通过一个关于《八佰》的视频弹幕数据,绘制了如下词云图,感觉效果还是可以的。 


海量的弹幕数据不仅可以绘制此类词云图,还可以调用百度AI进行情感分析。
那么,我们该如何获取弹幕数据呢?
本文运用Python爬取B站视频弹幕,让你轻松获取主流视频网站弹幕数据。 
1.网页分析

本文以爬取up主硬核的半佛仙人发布的《你知道奶茶加盟到底有多坑人吗?》视频弹幕为例,首先通过以下步骤找到存放弹幕的真实url。




简单分析url参数,很显然,date参数表示发送弹幕的时间,其他参数均无变化。因此,只需要改变date参数,然后通过beautifulsoup解析到弹幕数据即可。
2.爬虫实战
import requests #请求网页数据
from bs4 import BeautifulSoup #美味汤解析数据
import pandas as pd
import time
from tqdm import trange #获取爬取速度

def get_bilibili_url(start, end):
    url_list = []
    date_list = [i for i in pd.date_range(start, end).strftime('%Y-%m-%d')]
    for date in date_list:
        url = f"https://api.bilibili.com/x/v2/dm/history?type=1&oid=141367679&date={date}"
        url_list.append(url)
    return url_list

def get_bilibili_danmu(url_list):
    headers = {
        "user-agent""Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36",
        "cookie""你自己的" #Headers中copy即可
               }

    file = open("bilibili_danmu.txt"'w')
    for i in trange(len(url_list)):
        url = url_list[i]
        response = requests.get(url, headers=headers)
        response.encoding = 'utf-8'
        soup = BeautifulSoup(response.text)
        data = soup.find_all("d")
        danmu = [data[i].text for i in range(len(data))]
        for items in danmu:
            file.write(items)
            file.write("\n")
        time.sleep(3)
    file.close()


if __name__ == "__main__":
    start = '9/24/2020' #设置爬取弹幕的起始日
    end = '9/26/2020' #设置爬取弹幕的终止日
    url_list = get_bilibili_url(start, end)
    get_bilibili_danmu(url_list)
    print("弹幕爬取完成")

3.数据预览



-----------------

希望系统、快速学习

数据抓取与文本挖掘知识

可以学习数据分析专家@文彤老师

《跟文彤老师学文本抓取与挖掘》系列视频课程

系列课程包含以下三门课程

小白零编程网络爬虫实战

Python数据分析--玩转Pandas

Python数据分析--玩转文本挖掘


以上顺序也是学习的建议顺序

课程提供讲义(含代码)与数据供练习

学习过程有问题可加Q群与老师交流讨论

10.15~10.18期间参加课程学习

可享受5折优惠

今天最后一天,双11也没有这优惠力度



原价:477元

优惠价:238.50元

购买课程直接点击文末“阅读原文”进入即可

  

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/74444
 
562 次点击