社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python爬取B站视频弹幕

小蚊子数据分析 • 3 年前 • 433 次点击  

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
 
433 次点击