用python 抓取B站视频评论,制作词云

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. 代码获取内容,写入本地文件

     1 import requests
     2 import json
     3 def getHTML(html):
     4     count=1
     5     fi=open(‘bilibili.txt‘,‘w‘,encoding=‘utf-8‘)
     6     while(True):
     7         url=html+str(count)
     8         url=requests.get(url)
     9         if url.status_code==200:
    10             cont=json.loads(url.text)
    11         else:
    12             break
    13         lengthRpy = len(cont[‘data‘][‘replies‘])
    14         if count==1:
    15             try:
    16                 lengthHot=len(cont[‘data‘][‘hots‘])
    17                 for i in range(lengthHot):
    18                     # 热门评论内容
    19                     hotMsg=cont[‘data‘][‘hots‘][i][‘content‘][‘message‘]
    20                     fi.write(hotMsg + ‘\n‘)
    21                     leng=len(cont[‘data‘][‘hots‘][i][‘replies‘])
    22                     for j in range(leng):
    23                         # 热门评论回复内容
    24                         hotMsgRp=cont[‘data‘][‘hots‘][i][‘replies‘][j][‘content‘][‘message‘]
    25                         fi.write(hotMsgRp+‘\n‘)
    26             except:
    27                 pass
    28         if lengthRpy!=0:
    29             for i in range(lengthRpy):
    30                 comMsg=cont[‘data‘][‘replies‘][i][‘content‘][‘message‘]
    31                 fi.write(comMsg + ‘\n‘)
    32                 # print(‘评论:‘,cont[‘data‘][‘replies‘][i][‘content‘][‘message‘])
    33                 leng=len(cont[‘data‘][‘replies‘][i][‘replies‘])
    34                 for j in range(leng):
    35                     comMsgRp=cont[‘data‘][‘replies‘][i][‘replies‘][j][‘content‘][‘message‘]
    36                     fi.write(comMsgRp + ‘\n‘)
    37         else:
    38             break
    39         print("第%d页写入成功!"%count)
    40         count += 1
    41     fi.close()
    42     print(count-1,‘页评论写入成功!‘)
    43
    44 url="https://api.bilibili.com/x/v2/reply?type=1&oid="
    45 av=input("input your url:")
    46 html=url+av+‘&pn=‘
    47 getHTML(html)

    获取评论内容

  4. 绘制词云
    绘制词云过程分为:读取绘制词云文本,用结巴(第三方库jieba)将文本中高频词汇分出,为词云设置背景图片(可省略),查看及保存绘制词云图
    代码如下:

     1 from wordcloud import WordCloud,ImageColorGenerator
     2 import matplotlib.pyplot as plt
     3 from PIL import Image
     4 import numpy as np
     5 from os import path
     6 import jieba
     7
     8 lj=path.dirname(__file__)   #当前文件路径
     9 text=open(path.join(lj,‘bilibili.txt‘),encoding=‘utf-8‘).read() #读取的文本
    10 jieba.add_word(‘咬人猫‘)
    11 jieba.add_word(‘喵酱‘)    #添加结巴分辨不了的词汇
    12 jbText=‘ ‘.join(jieba.cut(text))
    13 imgMask=np.array(Image.open(path.join(lj,‘msk.png‘)))   #读入背景图片
    14 wc=WordCloud(
    15     background_color=‘white‘,
    16     max_words=500,
    17     font_path=‘msyh.ttc‘,    #默认不支持中文
    18     mask=imgMask,  #设置背景图片
    19     random_state=30 #生成多少种配色方案
    20 ).generate(jbText)
    21 ImageColorGenerator(imgMask)   #根据图片生成词云颜色
    22 # plt.imshow(wc)
    23 # plt.axis(‘off‘)
    24 # plt.show()
    25 wc.to_file(path.join(lj,‘biliDM.png‘))
    26 print(‘成功保存词云图片!‘)

    词云绘制

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

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

时间: 2024-12-17 21:41:36

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

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

上一节我们已经知道如何使用Fiddler进行抓包分析,那么接下来我们开始完成一个简单的小例子 抓取腾讯视频的评论内容 首先我们打开腾讯视频的官网https://v.qq.com/ 我们打开[电视剧]这一栏,找到一部比较精彩的电视剧爬取一下,例如:我们就爬取[下一站,别离]这部吧 我们找到这部电视剧的评论如下图: 我们看到上图标记部分[查看更多评论] 我们首先在Fiddelr中使用命令clear清除之前浏览的记录 输入命令直接回车即可 接着我们点击[查看更多评论],此时再次看Fiddler,我们可

python 爬取B站视频弹幕信息

获取B站视频弹幕,相对来说很简单,需要用到的知识点有requests.re两个库.requests用来获得网页信息,re正则匹配获取你需要的信息,当然还有其他的方法,例如Xpath.进入你所观看的视频的页面,F12进入开发者工具,选择网络.查找我们需要的信息,发现域名那列有comment.bilibili.com 格式为xml ,文件名即为cid号.点击它后,在右边的消息头中复制请求网址,在浏览器中打开,即可获得视频全部弹幕信息.    代码如下: 1 import requests 2 imp

利用Python抓取亚马逊评论列表数据

前段时间,我家妹子公司老板叫她去将法国亚马逊评论列表的前100页共1000个评论用户的联系方式找出来.1000个用户,要一个个的去看再记录下来,而且并不是每个评论用户都会将个人的联系方式留下来.那么问题来了,这样费时费力的工作如果人工去做的话,那么就是花了两天的时间也就找了前30页的数据(还有别的工作要做),然后累的够呛的.本着心疼的原则(程序猿能找到妹子就很不错了,所以得心疼着),就想帮着她做点事. 我本身的工作是做游戏客户端开发的,主要使用的开发语言是lua和c++,并没有接触过网页.网站相

python抓取某学院视频

视频抓取原理:获取所有的知识类别id->然后获取其子项->根据子项链接分析获取该类课程数->循环获取链接指向的视频.需要安装python库:requestspython解析xml使用了网上找的代码. 本来可以再优化.但是懒! 1 # coding: UTF-8 2 import os 3 import sys 4 import requests 5 import urllib.request,io 6 from html.parser import HTMLParser 7 8 #全局变

用python实现的抓取腾讯视频所有电影的爬虫

1. [代码]用python实现的抓取腾讯视频所有电影的爬虫    # -*- coding: utf-8 -*-# by awakenjoys. my site: www.dianying.atimport reimport urllib2from bs4 import BeautifulSoupimport string, timeimport pymongo NUM     = 0         #全局变量,电影数量m_type  = u''       #全局变量,电影类型m_site

《一出好戏》讲述人性,使用Python抓取猫眼近10万条评论并分析,一起揭秘“这出好戏”到底如何?

黄渤首次导演的电影<一出好戏>自8月10日在全国上映,至今已有10天,其主演阵容强大,相信许多观众也都是冲着明星们去的.目前<一出好戏>在猫眼上已经获得近60万个评价,评分为8.2分,票房已破10亿. 作者本人(汤小洋 )今天也走进了电影院,对这部电影做了亲身的观看,看完后的感觉是有些许失落的,本以为是喜剧片,结果发现笑点一般,从搞笑的角度来看,不如<西虹市首富>,影片更多的是反映人类本性的一部电影,不应当做喜剧片来看,影片中展现的人与人之间的关系倒是值得我们去深思.

Python爬虫实现抓取腾讯视频所有电影【实战必学】

2019-06-27 23:51:51 阅读数 407  收藏 更多 分类专栏: python爬虫 前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者: Python新手学习之家 用python实现的抓取腾讯视频所有电影的爬虫 # -*- coding: utf-8 -*-   import re   import urllib2   from bs4 import BeautifulSoup   import stri

用Python抓取全站中的404错误

链接是SEO的一个重要因素.为了在搜索引擎中获取更好的排名,一定要定期检查下网站中的链接是否依然有效.特别是由于一些巨大的改动可能会导致坏链接的出现.要检测这些站内的链接问题,可以通过一些在线的工具.比如Google Analytics,Bing Webmaster Tools,brokenlinkcheck.com等.尽管有现成的工具,我们也可以自己来编写一个.使用Python会非常容易. 参考原文:How to Check Broken Links with 404 Error in Pyt

【Python】Python抓取分享页面的源代码示例

本文章是关于利用Python方法来抓取某网站分享页面中的源码方法示例.需要大家注意的是Python抓取分享页面的源代码示例,是要在运行时导入BeautifulSoup.py文件后才可以使用. Python抓取分享页面的源代码示例,需要用到python urllib2模块方法,及BeautifulSoup模块. 源码如下: #coding:utf-8 import urllib2 from BeautifulSoup import BeautifulSoup ''' www.iplaypy.com