大江大河2弹幕数据之词云分析、情感极性分析、主题分析、共现网络分析

最近,自己在疯狂追《大江大河2》这部剧,作为当下最热门的电视剧之一,这部电视剧深受观众的喜爱,自从播出以后就好评不断

在这里插入图片描述
在这里插入图片描述

它主要讲述了改革开放三十年,一代人奋斗向阳的故事,看完之后深受启发,特别是最后一集的独白

“一代人有一代人的担当,我们身上也有我们应承担的责任”,

“道之所在,虽千万人,吾往矣”

疯狂点赞 ~

电视剧虽已看完,但也得继续学习,由此对大江大河2弹幕数据进行分析一波~


整个分析的基本流程如下:

在这里插入图片描述

1 数据抓取

此次抓取的为大江大河2弹幕数据,考虑到篇幅,这里不过多介绍抓取的详细流程。具体的过程可以见:python 腾讯视频弹幕爬取+词云

抓取目标

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这里的反扒措施只是简单地做了休眠处理time.sleep(1)和随机头from fake_useragent import UserAgent

其次,这里只针对弹幕数据的爬取,没有抓取用户名、发送弹幕时间等其他数据

import time
import requests
from lxml import etree
from multiprocessing.dummy import Pool
from requests.exceptions import RequestException
import openpyxl
import json
import re
from urllib import parse
import os
from fake_useragent import UserAgent
import urllib.request
import csv
import ssl
os.chdir(r'C:\Users\Administrator\Desktop')
wb = openpyxl.Workbook()    # 获取工作簿对象
sheet = wb.active           # 活动的工作表
# 添加列名
sheet.append(['弹幕'])
headers = {'User-Agent':UserAgent(verify_ssl=False).random}
# 删除无用参数,保留有用参数后的链接

# 获取参数

url_id = 'https://v.qq.com/x/cover/mzc0020021a5muh/y0035tn30sk.html'
res1 = requests.get(url_id,headers=headers,verify=False)
html = etree.HTML(res1.text)

id_ = html.xpath('//div[@class="mod_episode"]/span/@id')

# -----------------------------------------------------------------------
url_ = 'https://access.video.qq.com/danmu_manage/regist?vappid=97767206&vsecret=c0bdcbae120669fff425d0ef853674614aa659c605a613a4&raw=1'
_id = []
for i in id_:
    data={
          'wRegistType':2,
          'vecIdList':[i],
          'bIsGetUserCfg': 1,
          'wSpeSource': 0,
          'mapExtData': {
              i: {'strCid': "mzc0020021a5muh", 
                  'strLid': ""}}
          
          }
    res2 = requests.post(url_,json=data,headers=headers,verify=False)
    result = res2.json()['data']['stMap'][i]['strDanMuKey']
    
    # type=2&bubble_flag=1&cid=wu1e7mrffzvibjy&targetid=3753912717&vid=x003061htl5
    result = result.split('=',4)[-1]#切4到
    _id.append(result)
    
# len(_id)

# -----------------------------------------------------------------------
url = 'https://mfm.video.qq.com/danmu?otype=json&target_id=6372416484%26vid%3Dy0035tn30sk&timestamp=15'
# 如果不删除 当时用params时就会报错 name 'jQuery191010326120383708082_1608390000687' is not defined
# 前30集,第一个循环控制集数
for k in [_id[8]]:
    # 第二循环控制一集中弹幕
    # 把视频拉到最后,看一下一集timestamp最大的数字是多少
    # timestamp起始15,终止3000
    for i in range(15,3000,30):
        data = {
            'timestamp':i,
            'target_id':k
            }
        req = requests.get(url, timeout=30, params = data ,headers=headers,verify=False) # verify=False关掉安全认证
        # req.text的类型是一个字符串,使用eval函数可以将数据转换为python原有的数据类型
        
        req = eval(req.text)  # str ==>  dict
        # 定义一个列表,存取弹幕
        danmu = []
        if req['count'] != 0:
            for j in req['comments']:
                content =  j['content'].strip()
                # 爬一句弹幕,存一句
                danmu.append(content)
                sheet.append([content])
# 保存
wb.save(r'C:\Users\Administrator\Desktop\大江大河2[39集]弹幕.xlsx')  

因为一集的弹幕量就达到上万,所以我这里只抓取最后一集(39)弹幕进行分析,一共拿到16742条数据

在这里插入图片描述

2 数据清洗与整理

数据在采集完之后,往往包含着噪声、缺失数据、不规则数据等各种问题,因此需要对其进行清洗和整理工作,主要包括以下内容。

2.1 文本去噪

一份原始的文字语料中往往有很多干扰信息,包括标点符号、数字、英文字母、转换符等噪声,这些是首先要删除的。

import pandas as pd
import re

os.chdir(r'C:\Users\Administrator\Desktop')

data = pd.read_excel('大江大河2[31集-39集]弹幕.xlsx')
data.sample(5)
data.shape #  (16740, 1)

r1 = '[\s+\.!\/_,$%^*(+\"\')]+|[::+——()?【】“”!,。?、~@#¥%……&*()]+'
r2 = '[^\u4e00-\u9fa5]'

data['弹幕'] = data['弹幕'].str.replace('第3部','第三部')
data['弹幕'] = data['弹幕'].str.replace(r1,'') #删除标点符号
data['弹幕'] = data['弹幕'].str.replace(r2,'') #删除英文和数字

或者

data['弹幕'] = data['弹幕'].str.extract(r"([\u4e00-\u9fa5]+)")

2.2 文本去重

  • 重复语句删除
data.shape # (16740, 1)
#去除重复值
data.drop_duplicates(inplace=True)
#删除存在缺失值的行
data = data.dropna()
#恢复索引
data.index = range(data.shape[0])
data.shape# (11301, 1)
  • 机械压缩去重

例如“我真的真的真的很爱祖国”,通过机械压重后变为“我真的很爱祖国”

#定义机械压缩去重函数
def compress(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):   
                    k = k + i
                st = st[:j] + st[k:]    
    return st
compress(st="我真的真的真的很爱祖国")

在这里插入图片描述

#定义机械压缩去重函数
def compress(st):
    for i in range(1,int(len(st)/2)+1):
        for j in range(len(st)):
            if st[j:j+i] == st[j+i:j+2*i]:
                k = j + i
                while st[k:k+i] == st[k+i:k+2*i] and k<len(st):   
                    k = k + i
                st = st[:j] + st[k:]    
    return st
# compress(st="我真的真的真的很爱祖国")

data['弹幕'] =  data['弹幕'].apply(compress)

2.3 短句删除

完成机械压缩去词处理后,就进入到最后的预处理步骤:短句删除。短句删除的原理就是设定意见字数的下限(这里是4个字符),将小于这个下限的语料删除。

data.shape# (11301, 1)
data = data[data['弹幕'].apply(len)>=4]
data.shape# (10497, 1)

3 数据可视化

3.1 词云分析

分词并去停词

chineseStopWords.txt
在这里插入图片描述在这里插入图片描述

词频词云

# 词云图
import jieba
import pandas as pd
import stylecloud
import matplotlib.pyplot as plt
import numpy as np


def get_cut_words(content_series):
    # 读入停用词表
    stop_words = [] 

    with open(r"C:\\Users\\Administrator\\Desktop\\chineseStopWords.txt", 'r') as f:
        lines = f.readlines()
        for line in lines:
            stop_words.append(line.strip())
    # 添加关键词
    my_words = ['雷东宝','大江大河']    
    for i in my_words:
        jieba.add_word(i) 
    # 自定义停用词
    my_stop_words = ['好像', '第一', '了', '...','真的','出现']   
    stop_words.extend(my_stop_words)               
    # 分词
    content=';'.join([ str(c) for c in content_series.tolist()])
    word_num = jieba.lcut(content)
    # 条件筛选
    word_num_selected = [i for i in word_num if i not in stop_words and len(i)>=2]
    return word_num_selected
text1 = get_cut_words(content_series=data['弹幕'])



sub_new =['大江大河','雷东宝']
sub_old = ['大江','东宝']
text1 = pd.DataFrame(text1)
for i,j in  zip(sub_old,sub_new):
    text1.replace(i,j,inplace=True)
    
text1=text1[0].values.tolist()   

词云分析

from stylecloud import gen_stylecloud
result = " ".join(text1)
gen_stylecloud(text=result,
               font_path='C:\\Windows\\Fonts\\STXINWEI.TTF',
               # icon_name='fas fa-envira',
               icon_name='fas fa-crown',  
                max_words=150,
                size=1500,
               # max_font_size=70,
               output_name='C:\\Users\\Administrator\\Desktop\\pic.png',
               ) #必须加中文字体,否则格式错误

在这里插入图片描述

3.2 人物提及

import os
import pandas as pd
os.chdir(r'C:\Users\Administrator\Desktop')
# 读取数据
df = pd.read_excel('处理好的弹幕数据.xlsx')
tmp=[]
for i in df["弹幕"]:
    if "宋运辉" in i or "小辉" in i :
        tmp.append("宋运辉")
    elif "雷东宝" in i or "东宝" in i:
        tmp.append("雷东宝")
    elif "杨巡" in i:
        tmp.append("杨巡")
    elif "思申" in i:
        tmp.append("梁思申")
    elif "开颜" in i or "小猫" in i:
        tmp.append("程开颜")     
    else:
        tmp.append("其他")
tmp = pd.DataFrame(tmp)

# 这里剔除其他
tmp = tmp[tmp[0]!='其他']
tmp1 = tmp.value_counts(ascending=True).rename_axis('unique_values').reset_index(name='counts')

x = tmp1['unique_values']
y = tmp1['counts']

#绘制条形图
import matplotlib.pyplot as plt
# 这两行代码解决 plt 中文显示的问题
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
fig, ax = plt.subplots() 

ax.spines['right'].set_visible(False) 
ax.spines['top'].set_visible(False) 
ax.spines['bottom'].set_visible(False) 
ax.spines['left'].set_visible(False) 
plt.barh(x, y,color=['#66FF66','#6666CC','#FFFF33','#FF99FF','#66CCCC']) # 横放条形图函数 barh
ax.set_xticks([])
ax.yaxis.set_tick_params(size=0)
plt.title('大江大河2人物提及频数')
plt.show()

在这里插入图片描述

词云图等分析只是浅挖,下面将对数据进行建模深挖

4 数据建模

4.1 情感分析

情感分析又称情感极性分析,它是对文本进行表达出的情绪积极、消极以及不确定的判断。

4.1.1 基于百度开源NLP模型的情感分析

这里采用百度开源的NLP模型对数据进行情感倾向判断。代码如下:

import paddlehub as hub
senta = hub.Module(name="senta_bilstm")
texts = data['弹幕'].tolist()
input_data = {'text':texts}
res = senta.sentiment_classify(data=input_data)
data['积极分值'] = [x['positive_probs'] for x in res]
data['消极分值'] = [x['negative_probs'] for x in res]
data["积极分值"].mean()
t = data.eval("积极分值-消极分值")
data["情感倾向"] = np.where(t > 0, "正面", np.where(t == 0, "中立", "负面"))
data


df = data.groupby('情感倾向')['弹幕'].count()
regions = df.index.to_list()
values = df.to_list()

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(6,5),dpi=150)
plt.rcParams['font.sans-serif']=['KaiTi']
plt.rcParams['axes.unicode_minus']=False

plt.pie(values,labels=regions,radius=1.0,
        wedgeprops=dict(width=0.4,edgecolor='w'), textprops={'fontsize': 12},colors=['#FFCC99','#CCFF66','#99CCFF'])
plt.show()

在这里插入图片描述

4.1.2 基于SnowNLP模型的情感分析

SnowNLP主要可以进行中文分词、词性标注、情感分析、文本分类、转换拼音、繁体转简体、提取文本关键词、提取摘要、分割句子、文本相似。

SnowNLP是使用淘宝评论语料,利用贝叶斯机器学习方法训练出来的模型,因此,用在这里可能效果不佳。

import os
os.chdir(r'C:\Users\Administrator\Desktop')

from snownlp import SnowNLP
import pandas as pd


# 读取数据
df = pd.read_excel('处理好的弹幕数据.xlsx')

danmu = df['弹幕']
scores = [SnowNLP(i).sentiments for i in danmu]
emotions = []
for i in scores:
    if i > 0.5:
        emotions.append('正面')
    elif i==0.5:
        emotions.append('中立')
    else:
        emotions.append('负面')
        
df['情感分数'] = scores
df['情感'] = emotions

emo = df.groupby('情感')['弹幕'].count()
'''
情感
中立     143
正面    6443
负面    3911
Name: 弹幕, dtype: int64
'''
regions = emo.index.to_list()
values = emo.to_list()

import numpy as np
import matplotlib.pyplot as plt

plt.figure(figsize=(6,5),dpi=150)
plt.rcParams['font.sans-serif']=['KaiTi']
plt.rcParams['axes.unicode_minus']=False

plt.pie(values,labels=regions,radius=1.0,
        wedgeprops=dict(width=0.4,edgecolor='w'), textprops={'fontsize': 12},colors=['#FFCC99','#CCFF66','#99CCFF'])
plt.show()

在这里插入图片描述

4.2 关键词提取

# 关键词提取
import os
import jieba
import jieba.analyse
import pandas as pd
os.chdir(r'C:\Users\Administrator\Desktop')
# 读取数据
df = pd.read_excel('处理好的弹幕数据.xlsx')
text = ''.join(c for c in df['弹幕'])
keywords_textrank = jieba.analyse.textrank(text,topK=30,withWeight=False,allowPOS=('ns','n'))
print(keywords_textrank)
'''
['乡长', '大江', '结局', '监狱', '中国', '时候', '书记', '国家', '乡镇',
 '大家', '工人', '有点', '县长', '东海', '干部', '领导', '感觉', '画饼',
 '级别', '小说', '公司', '现实', '大结局', '企业', '电视剧', '产业', '格局', 
 '白眼', '农村', '兄弟']
'''

keywords = jieba.analyse.extract_tags(text,topK=20)
print(keywords)
'''
['第三部', '乡长', '东宝', '宋运辉', '大江', '雷东宝', '雷霆', '四眼',
 '再见', '结局', '小辉', '大江大河', '这个', '两年', '期待', '就是',
 '梁思申', '镇长', '一集', '不是']
'''

4.3 LAD模型主题分析

主题模型是指在一系列文档中提取抽象主题的一种统计模型,它是机器学习与NLP等领域常用的模型,通过该模型可以挖掘文档中使用词语的潜在规律,并且将规律相似的文档联系到一起,从而得到非结构化数据中的有用信息。

4.3.1 gensim 实现LDA主题模型
# jieba分词
import jieba
# 自定义
# 添加关键词
my_words = ['大江大河','雷东宝','雷霆']    
for i in my_words:
    jieba.add_word(i) 
df["弹幕分词"] = df['弹幕'].apply(lambda x:jieba.lcut(x))
df.head()

# 去掉停词
stop_words = [] 
with open(r"C:\\Users\\Administrator\\Desktop\\chineseStopWords.txt", 'r') as f:
   lines = f.readlines()
   for line in lines:
       stop_words.append(line.strip())
stop_words[:10]
df["弹幕分词"] = df["弹幕分词"].apply(lambda x:[i for i in x if i not in stop_words])
df["弹幕分词"].head()


# 分类
data_positive = df[df['情感分数']>=0.6]["弹幕分词"]
data_negative = df[df['情感分数']<0.3]["弹幕分词"]


# 积极评论的主题输出
from gensim import corpora,models
neg_dict = corpora.Dictionary(data_positive)
neg_corpus = [neg_dict.doc2bow(i) for i in data_positive]


# corpus = None : 用于训练模型的语料
# num_topics = 100 : 准备提取的主题数量
# id2word = None : 所使用的词条字典,便于结果阅读
# passes = 1 :模型遍历语料库的次数,次数越多模型越精确,但是也更花时间
# 用新出现的语料更新模型   ldamodel.update(other_corpus)
# gensim也提供了sklearn的API接口:sklearn_api.ldamodel,可以在sklearn中直接使用。

neg_lda = models.LdaModel(corpus=neg_corpus,num_topics=3,id2word=neg_dict)
# 列出最重要的前若干个主题
# print_topics(num_topics=20, num_words=10)
print(neg_lda.print_topics(3))
'''
[(0, '0.014*"宋运辉" + 0.013*"再见" + 0.009*"雷东宝" + 0.007*"想" + 0.007*"电视剧" + 0.006*"乡长" + 0.006*"杨巡" + 0.005*"希望" + 0.005*"梁思申" + 0.005*"真的"'),
 (1, '0.028*"结局" + 0.028*"第三部" + 0.026*"再见" + 0.020*"期待" + 0.014*"下一部" + 0.012*"第三季" + 0.010*"希望" + 0.010*"两年" + 0.009*"中国" + 0.008*"东海"'),
 (2, '0.031*"大江大河" + 0.028*"结束" + 0.017*"第三部" + 0.007*"喜欢" + 0.007*"雷霆" + 0.006*"哭" + 0.006*"工人" + 0.006*"小说" + 0.005*"加油" + 0.005*"下部"')]
'''

# 由于LDA是基于词频统计的,因此理论上一般不宜用TF-IDF来做文档特征,但并非不能尝试。实际分析中也确实会见到此类操作。
tfidf_model = models.TfidfModel(neg_corpus) # 建立TF-IDF模型  
corpus_tfidf = tfidf_model[neg_corpus] # 对所需文档计算TF-IDF结果
corpus_tfidf

# 计算各语料的LDA模型值
corpus_lda = neg_lda[corpus_tfidf] # 此处应当使用和模型训练时相同类型的矩阵
for doc in corpus_lda:
    print(doc)

# 模型拟合可能远远不够,模型还没有真正的把主题提取干净
# 可以得出每一个主题中的每一个词所对应的概率矩阵
ldamodel.get_topics()



# 负面评论的主题输出
neg_dict = corpora.Dictionary(data_negative)
neg_corpus = [neg_dict.doc2bow(i) for i in data_negative]

neg_lda = models.LdaModel(corpus=neg_corpus,num_topics=3,id2word=neg_dict)
print(neg_lda.print_topics(3))
'''
[(0, '0.018*"第三部" + 0.014*"乡长" + 0.011*"自来水" + 0.007*"镇" + 0.006*"搞" + 0.006*"回来" + 0.006*"乡" + 0.006*"村" + 0.005*"找" + 0.005*"县长"'),
 (1, '0.021*"第三部" + 0.019*"东宝" + 0.011*"监狱" + 0.011*"小辉" + 0.009*"乡长" + 0.009*"两年" + 0.009*"乡镇" + 0.006*"想" + 0.006*"不行" + 0.006*"级别"'),
 (2, '0.032*"乡长" + 0.012*"监狱" + 0.010*"第三部" + 0.009*"雷东宝" + 0.007*"东宝" + 0.006*"进修" + 0.006*"干部" + 0.005*"县长" + 0.005*"领导" + 0.005*"想"')]
'''

在这里插入图片描述
在这里插入图片描述

4.3.2 scikit-learn 实现LDA主题模型

这里不区分正面弹幕和负面弹幕

部分步骤

import os
import pandas as pd
os.chdir(r'C:\Users\Administrator\Desktop')
# 读取数据
df = pd.read_excel('处理好的弹幕数据.xlsx')
df.head()

在这里插入图片描述

import jieba
# 添加关键词
my_words = ['大江大河','雷东宝','雷霆']    
for i in my_words:
    jieba.add_word(i) 

# 分词
def chinese_word_cut(mytext):
    return " ".join(jieba.cut(mytext))
df["弹幕分词"] = df['弹幕'].apply(chinese_word_cut)
# df.sample(5)
df.head()

在这里插入图片描述
去停词

# 去掉停词
stop_words = [] 
with open(r"C:\\Users\\Administrator\\Desktop\\chineseStopWords.txt", 'r') as f:
   lines = f.readlines()
   for line in lines:
       stop_words.append(line.strip())
stop_words[:10]
df["弹幕分词"] = df["弹幕分词"].apply(lambda x:' '.join([i for i in x.split(' ') if i not in stop_words]))
df.head()

在这里插入图片描述
开始建模

# 文本的向量化
from sklearn.feature_extraction.text import TfidfVectorizer, CountVectorizer


# 只从文本中提取1000个最重要的特征关键词,然后停止。
n_features = 1000
# 开始关键词提取和向量转换过程:
tf_vectorizer = CountVectorizer(strip_accents = 'unicode',
                                max_features=n_features,
                                stop_words=stop_words,
                                max_df = 0.5,
                                min_df = 10)
tf = tf_vectorizer.fit_transform(df["弹幕分词"])
tf


# LDA主题模型
from sklearn.decomposition import LatentDirichletAllocation

# 先设定为3个主题分类
# n_components = None : 隐含主题数K,需要设置的最重要参数。K的设定范围和具体的研究背景有关。K越大,需要的文档样本越多。
# learning_method = 'online' : 即LDA的求解算法。'batch' | 'online'
# batch: 变分推断EM算法,会将将训练样本分批用于更新主题词分布,新版默认算法。
# online: 在线变分推断EM算法,大样本时首选。
# 仅在online算法时需要设定的参数
# learning_offset = 10. :用来减小前面训练样本批次对最终模型的影响。取值要大于1。
# learning_decay = 0.7 :控制"online"算法的学习率,一般不用修改。取值最好在(0.5, 1.0],以保证"online"算法渐进的收敛。
# total_samples = 1e6 : 分步训练时每一批文档样本的数量。 使用partial_fit进行模型拟合时才需要此参数。
# batch_size = 128 : 每次EM算法迭代时使用的文档样本的数量。
lda = LatentDirichletAllocation(n_components=3, max_iter=50,
                                learning_method='online',
                                learning_offset=50.,
                                random_state=0)

lda.fit(tf)
# 越高越好	
print(lda.score(tf))	
#训练好的模型的参数	
print(lda.get_params())

def print_top_words(model, feature_names, n_top_words):
    for topic_idx, topic in enumerate(model.components_):
        print("Topic #%d:" % topic_idx)
        print(" ".join([feature_names[i] for i in topic.argsort()[:-n_top_words - 1:-1]]))
    print()
n_top_words = 20
tf_feature_names = tf_vectorizer.get_feature_names()
# 输出主题
print_top_words(lda, tf_feature_names, n_top_words)

在这里插入图片描述

主题结果的图形化呈现

pyLDAvis包引入自R,可以用交互式图形的方式呈现主题模型的分析结果。

同时支持sklearn和gensim包。(在许多系统配置下都会出现兼容问题。)

# 可视化
import pyLDAvis	
import pyLDAvis.sklearn	
#在notebook中显示	
pyLDAvis.enable_notebook()
panel = pyLDAvis.sklearn.prepare(lda, #训练好的lda模型	
                                 tf,#训练库语料的词语特征空间(即Tfidfvecterizer或者CounterVecterizer)	
                                 tf_vectorizer)	

pyLDAvis.show(panel)
# pyLDAvis.disable_notebook() # 关闭notebook支持后,可以看到背后所生成的数据

在这里插入图片描述

在这里插入图片描述

4.4 共现网络分析

共词网络方法在知识网络研究中应用普遍,最为常见的就是利用论文关键词及其共现关系构建共词矩阵,进而映射为共词网络并可视化,从而来揭示某一学科某一领域某一主题的研究热点与趋势、知识结构与演化等。引自:共词网络的结构与演化-概念与理论进展

其基本含义:在大规模语料中,若两个词经常共同出现(共现)在截取的同一单元(如一定词语间隔/一句话/一篇文档等)中,则认为这两个词在语义上是相互关联的,而且,共现的频率越高,其相互间的关联越紧密。

其效果如下图

图片来自:CiteSpace关键词共现图谱含义详细解析
在这里插入图片描述

两个词共同出现的次数越多,网络图中两个词语节点连线越粗,也就是共现的次数为边上的权值

其次,单个词出现的次数越多,在网络图中节点越大,若一个词与许多词均有联系,则这个词会在网络图的中心区域。

根据这些思想,对于评论数据、弹幕数据等也能进行共现分析

只不过…

我还没学会具体怎么操作,后续在补充。

至此

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值