一.B站弹幕的爬取

  1.分析发现,其弹幕都是通过list.so?=cid这个文件加载出来的,所以我们找到这个文件的请求头的请求url,

  

  2. 打开url就能看到所有的评论

 

 3. 上代码,解析
#!/usr/bin/env python# -*- coding: utf-8 -*-
#author tom import requests
from lxml import etree
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'
} #抓取函数
def yitianSpiderf(url):
res=requests.get(url,headers=headers)
tree=etree.HTML(res.content)
comment_list=tree.xpath('//d/text()')
with open('倚天评论.txt','a+',encoding='utf-8') as f:
for comment in comment_list:
f.write(comment+'\n') #主函数,其实所有是视频找到其id就能抓到所有的弹幕
def main():
cid=''
url='https://api.bilibili.com/x/v1/dm/list.so?oid={}'.format(cid)
yitianSpiderf(url) if __name__ == '__main__':
main()

   

4.词云:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#author tom
import re
import jieba
from collections import Counter #使用结巴分词
with open('倚天评论.txt','r',encoding='utf-8') as f:
txt=f.read()
jbwords=jieba.cut(txt) #遇到这种非常规词不使用
with open('中文停用词表.txt' ,'r',encoding='utf-8') as f1:
stopwords=f1.read()
result=[]
for word in jbwords:
word=re.sub(r'[A-Za-z0-9\!?\%\[\]\,\.~]','',word) #去除英文符号
if word:
if word not in stopwords:
result.append(word)
'+++++++++++++++统计'
print('=====',result,len(result))
print(Counter(result)) #制作词云图
import matplotlib.pyplot as plt
from wordcloud import WordCloud,ImageColorGenerator
from PIL import Image
import numpy as np #指定字体,打开图片,转为数组
myfon=r'C:\Windows\Fonts\simkai.ttf'
# img1=Image.open('dog.jpg')
# graph1=np.array(img1)
img2=Image.open('1.png')
graph2=np.array(img2)
text='/'.join(result)
#词语对象
wc=WordCloud(font_path=myfon,background_color='white',max_font_size=50,max_words=500, mask=graph2)
wc.generate(text)
img_color=ImageColorGenerator(graph2)#从背景图中生成颜色值
plt.imshow(wc.recolor(color_func=img_color))
plt.imshow(wc)
plt.axis('off')
plt.show()

  5. 效果:

  

二.关于B站直播弹幕的爬取

  

1. 分析发现,b站直播的弹幕存放在一个名为msg的文件当中

    

  2.我们利用postman对这个网站发起post请求,果然可以拿到数据,

    

  3.代码

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#author tom
import requests
import time
from jsonpath import jsonpath #抓取函数
def crawl(url,headers,data):
res=requests.post(url=url,headers=headers,data=data)
#拿到响应,res.json就直接转化成字典格式了,jsonpath要处理的也需要是一个python字典
#jsonpath第一个参数是python字典,第二个参数是匹配规则,这边代表的是从根目录递归搜索text和nicname
comment_list=jsonpath(res.json(),'$..text')
nicname_list=jsonpath(res.json(),'$..nickname')
#同时循环两个列表,需要用到zip打包
for (nicname,comment) in zip(nicname_list,comment_list):
dic={
'nicname':nicname,
'comment':comment
}
print(dic) def main():
url = 'https://api.live.bilibili.com/ajax/msg'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36'}
data = {'roomid': ''}
#使用while循环最好呀睡觉,哪怕0.1也好,否则内存扛不住
while True:
crawl(url,headers,data)
time.sleep(2) if __name__ == '__main__':
main()

三.b站小视频的爬取

  需求:爬取b站的小视频

  url=url = http://vc.bilibili.com/p/eden/rank#/?tab=全部

1. 分析:打开这个网址我们发现这是一个ajax请求,并且这个请求里面包含了我们要的小视频地址
  

2.对vedio_playurl请求就直接把视频下载下来了
  


3. 上面的不方便查看,我们就对这个地址发起请求,利用jsonview来帮助查看


   

  4.看一下请求结果

  5.对ajax发起跟过请求

  

  可以看到,带着参数就可以拿到欧更多的数据,现在知道怎么抓去了把

  

b站弹幕的爬取以及词云的简单使用的更多相关文章

  1. Python 爬取 热词并进行分类数据分析-[简单准备] (2020年寒假小目标05)

    日期:2020.01.27 博客期:135 星期一 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备](本期博客) b.[云图制作+数据导入] ...

  2. Python 爬取 热词并进行分类数据分析-[云图制作+数据导入]

    日期:2020.01.28 博客期:136 星期二 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入](本期博客) ...

  3. Python 爬取 热词并进行分类数据分析-[拓扑数据]

    日期:2020.01.29 博客期:137 星期三 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  4. Python 爬取 热词并进行分类数据分析-[数据修复]

    日期:2020.02.01 博客期:140 星期六 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  5. Python 爬取 热词并进行分类数据分析-[解释修复+热词引用]

    日期:2020.02.02 博客期:141 星期日 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

  6. Python 爬取 热词并进行分类数据分析-[热词分类+目录生成]

    日期:2020.02.04 博客期:143 星期二   [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[ ...

  7. python爬虫爬取安居客并进行简单数据分析

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 爬取过程一.指定爬取数据二.设置请求头防止反爬三.分析页面并且与网页源码进行比对四.分析页面整理数据 ...

  8. bibli直播弹幕实时爬取

    1 分析数据来源  在不知道弹幕信息在哪里的时候,只能去all里面查看每一个相应的信息,看信息是否含有弹幕信息 在知道弹幕信息文件的时候,我们可以直接用全局文件搜索,定位到弹幕数据文件.操作如下图 2 ...

  9. Python 爬取 热词并进行分类数据分析-[App制作]

    日期:2020.02.14 博客期:154 星期五 [本博客的代码如若要使用,请在下方评论区留言,之后再用(就是跟我说一声)] 所有相关跳转: a.[简单准备] b.[云图制作+数据导入] c.[拓扑 ...

随机推荐

  1. 529A And Yet Another Bracket Sequence

    传送门 题目大意 给定有一个长度为n n的括号序列,现在有两种操作: 在任意一个位置插入有一个左括号或右括号 将末尾的一个括号放到最前面 可以对这个序列进行若干次操作,问在使括号序列合法的前提下,长度 ...

  2. Django-----restframework图解

  3. ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题

    ifcfg-eth0文件参数PREFIX 和 NETMASK的配置不一致问题 摘自:https://blog.csdn.net/aikui0621/article/details/9148997 阅读 ...

  4. linux查看进程开始时间

    ps -eo pid,lstart|grep [pid] 命令解释: -e Select all processes. -o,o Specify user-defined format. pid a ...

  5. GetPixelAddress()函数Alpha通道会丢失

    CImage类中GetPixelAddress()函数来设置获取对应的颜色值是发现Alpha无效. void CGBImage::Load(){ CImage sourceImage; sourceI ...

  6. Spring容器管理对象和new对象

    问题:一个业务类交给spring管理,并自动注入了其他业务类作为属性,方法中通过全局属性调用其他业务类的方法.当该业务类是通过new获取的情况下,该实例的属性会是null(不存在依赖注入实例),调用方 ...

  7. iOS开发-导出profile文件

    1.登陆苹果开发者网站 苹果开发者中心,点击 Certificates, Identifiers & Profiles 2.导出Provisioning Profiles 2.1 点击右上脚加 ...

  8. 数据结构之BF算法,kmp算法,三元组,十字链表总结

    在这一章中,老师教了我们四种数据结构:BF算法,kmp算法,三元组和十字链表:还给我们讲了2019年团体天体赛中T1-8的AI题 1.对于BF和kmp算法,老师除了在课堂上讲解算法的主要核心思想外,还 ...

  9. LoadRunner11_MySQL数据库脚本

    记录一次压测过程中,通过LoadRunner向MySQL数据库插入大量数据的过程. [1]需要使用到MySQL的libmysql.dll动态链接库,因此需要安装MySQL:注:本地安装的MySQL最好 ...

  10. Linux常用命令--用户管理,文件权限,打包命令等

    幕布链接 Linux常用命令--用户管理,文件权限,打包命令等