python 作为爬虫利器,与其有很多强大的第三方库是分不开的,今天说的爬取B站的视频评论,其实重点在分析得到的评论化作嵌套的字典,在其中取出想要的内容。层层嵌套,眼花缭乱,分析时应细致!步骤分为以下几点:

  1. F12进入开发者选项
    进入B站你想观看的视频页面,例如我看的是咬人猫的一个视频,进入开发者选项后,向下拉取视频评论,这时评论内容才被加载出来,此刻在开发者选项中网络那里就可以看到从网站获取的很多信息,仔细查找,发现我们想要的如下图:

    可以看到评论区的内容,点开消息头中的请求网址(https://api.bilibili.com/x/v2/reply?callback=jQuery172048896660782015544_1512700122908&jsonp=jsonp&pn=1&type=1&oid=11022534&sort=0&_=1512700148066),复制粘贴到浏览器中查看,可看到一页的评论内容,取出不必要的网址内容,剩余为:https://api.bilibili.com/x/v2/reply?pn=1&type=1&oid=11022534  ,其中pn即为第几页的评论,oid为视频的av号。
  2. 分析获取内容字典格式,嵌套内容的包含关系
  3. 代码获取内容,写入本地文件
     import requests
    import json
    def getHTML(html):
    count=1
    fi=open('bilibili.txt','w',encoding='utf-8')
    while(True):
    url=html+str(count)
    url=requests.get(url)
    if url.status_code==200:
    cont=json.loads(url.text)
    else:
    break
    lengthRpy = len(cont['data']['replies'])
    if count==1:
    try:
    lengthHot=len(cont['data']['hots'])
    for i in range(lengthHot):
    # 热门评论内容
    hotMsg=cont['data']['hots'][i]['content']['message']
    fi.write(hotMsg + '\n')
    leng=len(cont['data']['hots'][i]['replies'])
    for j in range(leng):
    # 热门评论回复内容
    hotMsgRp=cont['data']['hots'][i]['replies'][j]['content']['message']
    fi.write(hotMsgRp+'\n')
    except:
    pass
    if lengthRpy!=0:
    for i in range(lengthRpy):
    comMsg=cont['data']['replies'][i]['content']['message']
    fi.write(comMsg + '\n')
    # print('评论:',cont['data']['replies'][i]['content']['message'])
    leng=len(cont['data']['replies'][i]['replies'])
    for j in range(leng):
    comMsgRp=cont['data']['replies'][i]['replies'][j]['content']['message']
    fi.write(comMsgRp + '\n')
    else:
    break
    print("第%d页写入成功!"%count)
    count += 1
    fi.close()
    print(count-1,'页评论写入成功!') url="https://api.bilibili.com/x/v2/reply?type=1&oid="
    av=input("input your url:")
    html=url+av+'&pn='
    getHTML(html)

    获取评论内容

  4. 绘制词云
    绘制词云过程分为:读取绘制词云文本,用结巴(第三方库jieba)将文本中高频词汇分出,为词云设置背景图片(可省略),查看及保存绘制词云图
    代码如下:
     from wordcloud import WordCloud,ImageColorGenerator
    import matplotlib.pyplot as plt
    from PIL import Image
    import numpy as np
    from os import path
    import jieba lj=path.dirname(__file__) #当前文件路径
    text=open(path.join(lj,'bilibili.txt'),encoding='utf-8').read() #读取的文本
    jieba.add_word('咬人猫')
    jieba.add_word('喵酱') #添加结巴分辨不了的词汇
    jbText=' '.join(jieba.cut(text))
    imgMask=np.array(Image.open(path.join(lj,'msk.png'))) #读入背景图片
    wc=WordCloud(
    background_color='white',
    max_words=500,
    font_path='msyh.ttc', #默认不支持中文
    mask=imgMask, #设置背景图片
    random_state=30 #生成多少种配色方案
    ).generate(jbText)
    ImageColorGenerator(imgMask) #根据图片生成词云颜色
    # plt.imshow(wc)
    # plt.axis('off')
    # plt.show()
    wc.to_file(path.join(lj,'biliDM.png'))
    print('成功保存词云图片!')

    词云绘制

在代码极少的情况下,python就能做出如此惊人的工作,只能是  人生苦短,我用python 了。

原创不易,尊重版权。转载请注明出处:http://www.cnblogs.com/xsmile/

用python 抓取B站视频评论,制作词云的更多相关文章

  1. 爬取B站弹幕并且制作词云

    目录 爬取弹幕 1. 从手机端口进入网页爬取找到接口 2.代码 制作词云 1.文件读取 2.代码 爬取弹幕 1. 从手机端口进入网页爬取找到接口 2.代码 import requests from l ...

  2. 【Python3 爬虫】16_抓取腾讯视频评论内容

    上一节我们已经知道如何使用Fiddler进行抓包分析,那么接下来我们开始完成一个简单的小例子 抓取腾讯视频的评论内容 首先我们打开腾讯视频的官网https://v.qq.com/ 我们打开[电视剧]这 ...

  3. python爬取B站视频弹幕分析并制作词云

    1.分析网页 视频地址: www.bilibili.com/video/BV19E… 本身博主同时也是一名up主,虽然已经断更好久了,但是不妨碍我爬取弹幕信息来分析呀. 这次我选取的是自己 唯一的爆款 ...

  4. python 爬取B站视频弹幕信息

    获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频 ...

  5. Python爬取B站视频信息

    该文内容已失效,现已实现scrapy+scrapy-splash来爬取该网站视频及用户信息,由于B站的反爬封IP,以及网上的免费代理IP绝大部分失效,无法实现一个可靠的IP代理池,免费代理网站又是各种 ...

  6. python抓取知识星球精选帖,制作为pdf文件

    版权声明:本文为xing_star原创文章,转载请注明出处! 本文同步自http://javaexception.com/archives/90 背景: 这两年知识付费越来越热,我也加入了不少知识星球 ...

  7. python抓取某学院视频

    视频抓取原理:获取所有的知识类别id->然后获取其子项->根据子项链接分析获取该类课程数->循环获取链接指向的视频.需要安装python库:requestspython解析xml使用 ...

  8. python 爬取腾讯视频评论

    import urllib.request import re import urllib.error headers=('user-agent','Mozilla/5.0 (Windows NT 1 ...

  9. 用Python爬取B站、腾讯视频、爱奇艺和芒果TV视频弹幕!

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

随机推荐

  1. ASP.NET MVC 分页

    概述:数据比较多的时候,常使用分页.这里使用bootpag.js和PagedList这两个插件实现. 准备JS的引用 1.这个是bootstrap 中pagination的库 2..NET后台ToPa ...

  2. TinyOS编程思想和Nesc基础语法

    TinyOS操作系统由nesc语言写成,从程序员角度看,它的基本作用就是提供了一组API接口以及一些编程规则. 具体来说,基于nesc语言的TinyOS编程行为具有以下特点: a.兼容C语言:使用ne ...

  3. 读书笔记-你不知道的JS中-promise

    之前的笔记没保存没掉了,好气,重新写! 填坑-- 现在与将来 在单个JS文件中,程序由许多块组成,这些块有的现在执行,有的将来执行,最常见的块单位是函数. 程序中'将来'执行的部分并不一定在'现在'运 ...

  4. Problem D

    Problem Description An entropy encoder is a data encoding method that achieves lossless data compres ...

  5. JavaScript--我发现,原来你是这样的JS:面向对象编程OOP[2]--(创建你的那个对象吧)

    一.介绍 我们继续面向对象吧,这次是面向对象编程的第二篇,主要是讲创建对象的模式,希望大家能从博客中学到东西. 时间过得很快,还是不断的学习吧,为了自己的目标. 二.创建对象 1.前面的创建对象方式 ...

  6. Centos6.8 安装tomcat8.5.11

    1.下载 安装包 wget http://mirrors.aliyun.com/apache/tomcat/tomcat-8/v8.5.11/bin/apache-tomcat-8.5.11.tar. ...

  7. c++学习笔记---02---从一个小程序说起

    从一个小程序说起 这一讲的主要目的是帮助大家在C语言的背景知识上与C++建立联系. 问题探索 问题:对一个整型数组求和. 要求:定义一个存储着 n 个元素的数组,要求用C语言完成这个任务. 赶紧的:大 ...

  8. Node.js Stream(流)

    Stream 是一个抽象接口,Node 中有很多对象实现了这个接口.例如,对http 服务器发起请求的request 对象就是一个 Stream,还有stdout(标准输出). Node.js,Str ...

  9. HTML学习笔记 css定位浮动及瀑布流案例 第十三节 (原创) 参考使用表

    #fd { width: 100px; height: 150px; background-color: forestgreen; float: left; } #sd { width: 150px; ...

  10. VS2015企业版序列号

    vs2015 企业版HM6NR-QXX7C-DFW2Y-8B82K-WTYJV2XNFG-KFHR8-QV3CP-3W6HT-683CH