慕课《用Python玩转数据》之B站弹幕数据分析

慕课《用Python玩转数据》之B站弹幕数据分析

1.源代码

# -*- coding: utf-8 -*-
"""
Created on Wed May 13 17:01:29 2020

@author: 苏子都
"""

import requests
import re
import numpy as np
import pandas as pd
from bs4 import BeautifulSoup
import datetime

import matplotlib.pyplot as plt
# from matplotlib.pyplot import MultipleLocator

from pyecharts import Pie
import webbrowser

from wordcloud import WordCloud
import jieba

plt.style.use('seaborn-dark')          #设置绘图风格



barrage_list=[]          #获取到弹幕的内容

def get_barrage():
    """
        爬取弹幕
        返回:
            - barrage_all:     弹幕的详细信息,比如发送者、发送时间等
    """
    url='https://api.bilibili.com/x/v1/dm/list.so?oid=7633504'
    res=requests.get(url)
    res.encoding='utf-8'
    res_xml=res.content.decode('utf-8')
    barrage_all=[]          #除了弹幕内容的其他信息,包括弹幕发送者ID、发送弹幕的时间
    
    #匹配出需要的内容,形式如<d p="4688.02300,1,25,16777215,1566557108,0,6a622490,20664776809512964">战歌起!</d>
    pattern=re.compile('<d.*?>(.*?)</d>')          #匹配出xml文件里面的d标签,获取弹幕内容
    global barrage_list
    barrage_list=pattern.findall(res_xml)
    
    html=res.text
    soup=BeautifulSoup(html,'html.parser')
    for target in soup.find_all('d'):             #弹幕的详细信息包含在d标签里面的p标签,先筛选出所有d标签
        value=target.get('p').split(',')          #获取p标签里面的内容
        
        #根据爬取到的弹幕的详细信息的格式,生成并保存得到的结果
        barrage_all.append({
   '时间':value[0],'弹幕模式':value[1],'弹幕字号':value[2],'弹幕颜色':value[3],'时间戳':value[4],'弹幕池':value[5],'发送者ID':value[6],'历史弹幕':value[7]})

    return barrage_all



def data_processing(barrage_df):
    """
        数据处理
        参数:
            - barrage_df:     弹幕的所有信息,由弹幕详细信息和弹幕内容组成
    """
    barrage_time=(barrage_df['时间'].astype(float)).astype(int)
    time_list=[]          #存储弹幕发在整个视频的哪一个时间
    
    #将爬取到的“时间”,由秒数变为时分秒的形式
    for a_time in barrage_time:
        m,s=divmod(a_time,60)
        h,m=divmod(m,60)
        a_time=str(h)
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值