一.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. 498B Name That Tune

    传送门 题目大意 n首音乐,第i首被听出来的概率为pi,刚开始听第一首,1s后如果听出来了则放第下一首,否则接着听这一首,第i首在连续听了ti s之后一定会被听出来,问Ts后听出来的歌的期望数量. 分 ...

  2. LINUX 查看CUP温度

    在Linux下可以通过lm_sensors来查看CPU的温度(当然你的硬件首先要支持),要使用这个功能要有内核相关模块(比如I2C)的支持,下面说一下操作方法: 先看一下你的机器上是否安装了lm_se ...

  3. HttpRuntime.Cache

    a.在Web开发中,我们经常能够使用到缓存对象(Cache),在ASP.NET中提供了两种缓存对象,HttpContext.Current.Cache和HttpRuntime.Cache,那么他们有什 ...

  4. 【Web API2】ASP.NET Web API Security

    实现安全的方式既可以是host提供,也可以框架提供. 1,HTTP Module 方式,工作在IIS上,所以web api要托管在IIS上才行.其作用于HTTP管道的最前端,所以这种方式影响的是全局, ...

  5. post get 方法

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  6. C#ADO.NET基础一

    简介 使用SQLite进行讲解 1.基础类: SQLiteConnection 连接数据库 SQLiteCommand 执行命令(增,删,改,查),或存储过程 SQLiteDataReader 读取查 ...

  7. Mysql避免重复插入记录方法

    一.mysql replace用法 1.replace into  replace into table (id,name) values('1','aa'),('2','bb')  此语句的作用是向 ...

  8. 上课总结-模电chapter 1

    Chapter 1 半导体器件 一.杂质半导体(N型半导体/P型半导体) N型 p型 特点 N型 将少量5价元素参入四价元素中==> 电子多 ==>电子为多子 p型 将少量3价元素参入四价 ...

  9. 引用面试官文章 :如何准备Java初级和高级的技术面试

    本人最近几年一直在做java后端方面的技术面试官,而在最近两周,又密集了面试了一些java初级和高级开发的候选人,在面试过程中,我自认为比较慎重,遇到问题回答不好的候选人,我总会再三从不同方面提问,只 ...

  10. 将php命令加入cenos环境变量

    0.修改/etc/profile文件使其永久性生效,并对所有系统用户生效,在文件末尾加上如下两行代码 1.PATH=$PATH:/usr/local/webserver/php/bin:/usr/lo ...