-
2021-06-17 00:18:19
爬取b站弹幕制作词云 (用宋浩老师的视频为例(手动狗头))
可以仔细看代码 讲解都非常的详细
#引库 import requests from bs4 import BeautifulSoup import pandas as pd #请求、解析、保存数据 # 请求数据 url = 'https://comment.bilibili.com/64641038.xml' html = requests.get(url).content # 解析数据 html_data = str(html, 'utf-8') bs4 = BeautifulSoup(html_data, 'lxml') results = bs4.find_all('d') comments = [comment.text for comment in results] comments_dict = {'comments': comments} # 将数据保存在本地 br = pd.DataFrame(comments_dict) br.to_csv('D:/pycharm路径/词云.csv', encoding='utf-8') #保存数据的路径 #接下来,我们就对保存好的数据进行深加工。 #制作词云,我们需要用到 wordcloud 模块、matplotlib 模块、jieba 模块,同样都是第三方模块,直接用 pip 进行安装。 from wordcloud import WordCloud, ImageColorGenerator import matplotlib.pyplot as plt import pandas as pd import jieba import numpy from PIL import Image #去除一些词语 exclude={"我的","我","得","的","有","了","是","你"} # 解析背景图片 #mask_img = plt.imread('C:/Users/Lenovo/Desktop/2.jpg') #图片背景的地址 mask_img = numpy.array(Image.open('D:/pycharm路径/6.jpg')) #设置词云样式 wc = WordCloud( scale=5, #这个数值越大,产生的图片分辨率越高,字迹越清晰,最好不要超过64,运行很慢 # 设置字体 font_path='SIMYOU.TTF', # 允许最大词汇量 max_words = 3000, # 设置最大号字体大小 max_font_size = 70, # 设置使用的背景图片 mask = mask_img, # 设置输出的图片背景色 background_color=None, mode="RGBA", # 设置有多少种随机生成状态,即有多少种配色方案 random_state=50, #不显示这些词语 stopwords=exclude) #接下来,我们要读取文本信息,进行分词并连接起来 # 读取文件内容 br = pd.read_csv('D:/pycharm路径/词云.csv', header=None) #和上边保存数据的路径一样 # 进行分词,并用空格连起来 text = '' for line in br[1]: text += ' '.join(jieba.cut(line, cut_all=False)) wc.generate(text) plt.imshow(wc) #显示词云 plt.axis("off") #关闭坐标轴 plt.show() #显示图像
动动小手点个赞❤
更多相关内容 -
python爬虫工具_B站弹幕爬取
2021-10-30 21:37:02运行程序,输入Bvid和爬取日期;程序运行完成后会在当前文件夹下生成一个csv格式文件。 -
B站弹幕抓取2021.zip
2021-09-28 00:00:26抓取B站弹幕数据。 弹幕dmid,唯一 可用于操作参数 视频内弹幕出现时间,毫秒 弹幕类型,1 2 3:普通弹幕 4:底部弹幕 5:顶部弹幕 6:逆向弹幕 7:高级弹幕 8:代码弹幕 9:BAS弹幕(仅限于特殊弹幕专包) 弹幕字号... -
java爬B站弹幕加java生成词云
2021-04-24 13:17:40java爬B站弹幕加java生成词云java爬B站弹幕加java生成词云先添加依赖 然后直接用就行了org.apache.httpcomponentshttpclient4.5.12com.kennycasonkumo-core1.27com.kennycasonkumo-tokenizers1.27package com.yang;...java爬B站弹幕加java生成词云
java爬B站弹幕加java生成词云
先添加依赖 然后直接用就行了
org.apache.httpcomponents
httpclient
4.5.12
com.kennycason
kumo-core
1.27
com.kennycason
kumo-tokenizers
1.27
package com.yang;
import com.kennycason.kumo.CollisionMode;
import com.kennycason.kumo.WordCloud;
import com.kennycason.kumo.WordFrequency;
import com.kennycason.kumo.bg.CircleBackground;
import com.kennycason.kumo.font.KumoFont;
import com.kennycason.kumo.font.scale.SqrtFontScalar;
import com.kennycason.kumo.nlp.FrequencyAnalyzer;
import com.kennycason.kumo.nlp.tokenizers.ChineseWordTokenizer;
import com.kennycason.kumo.palette.LinearGradientColorPalette;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.CookieSpecs;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.awt.*;
import java.io.InputStream;
import java.util.*;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class PanBibi {
//av 号 获取 cid
public static String getBofqi(String aid) throws Exception{
RequestConfig defaultConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.STANDARD).build();
CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
HttpGet httpGet = new HttpGet("https://www.bilibili.com/video/av"+aid+"/") ;
httpGet.setConfig(defaultConfig);
CloseableHttpResponse httpResponse = closeableHttpClient.execute(httpGet) ;
HttpEntity httpEntity = httpResponse.getEntity() ;
String en= EntityUtils.toString(httpEntity) ;
String con = "cid=(.*)?&aid=" ;
Pattern ah = Pattern.compile(con);
Matcher mr = ah.matcher(en);
while(mr.find()) {
String id = mr.group();
String newUrl = id.replace("cid=","") ;
String x = newUrl.replace("&aid=","") ;
System.out.println(x);
return x;
}
return "";
}
//访问 弹幕地址 获取弹幕
public static Map ReaderBiBi(String x) throws Exception{
CloseableHttpClient closeableHttpClient = HttpClients.createDefault() ;
HttpGet httpGet1 = new HttpGet("http://comment.bilibili.com/"+x+".xml");
CloseableHttpResponse httpResponse1 = closeableHttpClient.execute(httpGet1) ;
HttpEntity entity = httpResponse1.getEntity() ;
InputStream in = entity.getContent();
byte b[] = new byte[1024*100];//不用entity.tostring因为乱码
int temp=0; //所有读取的内容都使用temp接收
StringBuffer stringBuffer = new StringBuffer();
while((temp=in.read(b))!=-1){
stringBuffer.append(new String(b));
}
in.close();
Maplist=new HashMap(1024);
String patstr="(.*?)";
Pattern a = Pattern.compile(patstr);
Matcher m = a.matcher(stringBuffer+"");
String str=null;
Integer integer=0;
while(m.find()){
str=m.group().replaceAll("","").replaceAll("","");
integer= list.get(str);
if(integer==null)
integer=0;
list.put(str,++integer);
}
System.out.println("共"+list.size()+"条弹幕");
return list;
}
//创建图片
public static void GreaderImg(Map strs) throws Exception{
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(600);
frequencyAnalyzer.setMinWordLength(2);
frequencyAnalyzer.setWordTokenizer(new ChineseWordTokenizer());
// 可以直接从文件中读取
//final List wordFrequencies = frequencyAnalyzer.load(getInputStream("text/chinese_language.txt"));
final List wordFrequencies = new ArrayList();
for (Map.Entry book : strs.entrySet()){
wordFrequencies.add(new WordFrequency(book.getKey(),book.getValue()));
}
//此处不设置会出现中文乱码
java.awt.Font font = new java.awt.Font("STSong-Light", 2, 18);
final Dimension dimension = new Dimension(900, 900);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.PIXEL_PERFECT);
wordCloud.setPadding(2);
wordCloud.setBackground(new CircleBackground(255));
wordCloud.setFontScalar(new SqrtFontScalar(12, 42));
//设置词云显示的三种颜色,越靠前设置表示词频越高的词语的颜色
wordCloud.setColorPalette(new LinearGradientColorPalette(Color.RED, Color.BLUE, Color.GREEN, 30, 30));
wordCloud.setKumoFont(new KumoFont(font));
wordCloud.setBackgroundColor(new Color(255, 255, 255));
//因为我这边是生成一个圆形,这边设置圆的半径
wordCloud.setBackground(new CircleBackground(900));
wordCloud.build(wordFrequencies);
wordCloud.writeToFile("d://3.png");
}
// av 号 和 cid 弹幕的编号
public static void ComeKna(String av,String cid) throws Exception{
String bofqi=null;
if(cid!=null)
bofqi=cid;
else
bofqi= getBofqi(av);
if(bofqi==null) return;
Map str= PanBibi.ReaderBiBi(bofqi);
PanBibi.GreaderImg(str);
}
}
调用
//传第二个了 就不用在找cid了 直接获取 生成
PanBibi.ComeKna("626634287","221674886");
[var1]
可以在控制台直接打aid获取
可以通过网络窗口获取cid的名称 这样就可以获取放弹幕的文件了
然后访问这个地址 获取数据 在通过数据权重生成词云
[var1]
开源地址 com.kennycason
Github:
码云
java爬B站弹幕加java生成词云相关教程
-
爬虫B站任意视频 弹幕文字+时间
2021-09-23 20:44:25import pandas as pd import re import requests from bs4 import BeautifulSoup time_nature=[] comments=[] ...),', res.text)[0] #其中cid是弹幕对应的id url = f'https://comment.bilibili.cimport pandas as pd import re import requests from bs4 import BeautifulSoup time_nature=[] comments=[] url = input('请输入B站视频链接: ') res = requests.get(url) cid = re.findall(r'"cid":(.*?),', res.text)[0] #其中cid是弹幕对应的id url = f'https://comment.bilibili.com/{cid}.xml' print(url) request = requests.get(url)#获取页面 request.encoding='utf8'#因为是中文,我们需要进行转码,否则出来的都是unicode soup = BeautifulSoup(request.text, 'lxml') results = soup.find_all('d') for t in soup.find_all('d'): # for循环遍历所有d标签,并把返回列表中的内容赋给t time_nature.append(t.attrs['p']) comments.append(t.text) print(t.attrs['p']) print(t.text) df = pd.DataFrame() df['时间属性'] = time_nature df['弹幕内容'] = comments df.to_excel('b站弹幕.xls')
-
python爬取B站弹幕
2021-09-05 19:14:31文章目录 1.所需库 2.cid的获取 3.源代码 1.所需库 requests:用于发送http请求 BeautifulSoup:用于解析html文档,便于之后的到导航和查找 pandas:用于对数据的处理,创建数据电子表格 2.cid的获取: ...文章目录
1.所需库
2.cid的获取
3.源代码1.所需库
- requests:用于发送http请求
- BeautifulSoup:用于解析html文档,便于之后的到导航和查找
- pandas:用于对数据的处理,创建数据电子表格
2.cid的获取:
点击F12在右端获取
3.源代码如下:
import numpy as np from PIL import Image from bs4 import BeautifulSoup url="http://comment.bilibili.com/cid.xml" req = requests.get(url) html=req.content html_doc = str(html,"utf-8") #解析 soup = BeautifulSoup(html_doc,'html.parser') results = soup.find_all('d') #x.text表示要放到contents中的值 contents = [x.text for x in results] #保存结果 dic ={"contents" : contents} #用字典创建了一个电子表格 df = pd.DataFrame(dic) #把内容写到bili.csv中 df["contents"].to_csv("hetongxue.csv",encoding="utf-8",index=False)
-
零基础学爬虫(一):不用编程抓取B站弹幕信息
2021-04-23 12:17:14原标题:零基础学爬虫(一):不用编程抓取B站弹幕信息 网络爬虫是一种自动获取网页内容的程序,是搜索引擎的重要组成部分。利用网络爬虫可以做到很多很有趣、有用的事情,比如收集某网站的用户信息、抓取论坛发言、各... -
Python爬虫入门教程05:B站视频弹幕的爬取
2021-01-25 16:55:08一、明确需求 找一个弹幕比较多的视频爬取 二、网页数据分析 以前的B站弹幕视频,点击查看历史的弹幕,会给你返回一个json数据,包含了所有的弹幕内容。 现在点击历史弹幕数据,同样是有数据加载出来,但是里面的都... -
【python--爬虫】b站弹幕爬虫
2020-08-03 19:34:42获取bilibili直播间弹幕 房间号从url上获取。 例如直播间url为:https://live.bilibili.com/21584153?visit_id=2vnqkd7xmr28 房间号就为:21584153 获取不同房间的弹幕:修改第26行的roomid的值为对应的房间号 "... -
python爬虫教程:爬取Bilibili弹幕过程解析
2020-12-22 09:39:24先来思考一个问题,B站一个视频的弹幕最多会有多少? 比较多的会有2000条吧,这么多数据,B站肯定是不会直接把弹幕和这个视频绑在一起的。 也就是说,有一个视频地址为https://www.bilibili.com/video/av67946325,... -
爬虫爬取b站弹幕遇到乱码问题
2021-01-12 20:51:41今天在b站爬取弹幕的时候发现爬取的弹幕是乱码。最后发现是编码问题。 综合整理如下: #首先准备request库和lxml库 import requests from lxml import etree #b站网址 url=... -
python爬虫b站三国演义全集弹幕
2022-06-12 20:38:40python爬虫b站三国演义全集弹幕 -
python爬取b站弹幕并进行数据可视化
2019-11-22 19:19:21python爬取b站弹幕并进行数据可视化 1.第一步,爬取b站弹幕 我们随便打开一个b站视频 打开开发者模式,在network下搜索list,可以找到该视频的弹幕文件 打开之后是这个样子的 结构还是比较简单的,我们后续爬取... -
Python爬虫 bilibili视频弹幕提取过程详解
2020-09-18 22:30:13主要介绍了Python爬虫 bilibili视频弹幕提取过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
卧槽!原来爬取B站弹幕这么简单!看完即会!
2020-11-17 13:31:14作者:叶庭云,... 一、分析网页 二、获取弹幕数据 三、绘制词云图 ... ... ...点击弹幕列表,查看历史弹幕,并选择任意一天的历史弹幕,此时就能找到存储该日期弹幕的ajax数据包,所有弹幕数据放在一个i标签里。 . -
爬B站弹幕出现问题,求问大神
2021-06-15 00:02:02后浪弹幕.txt', 'a') for data in datas: text = data.text print(text) file.write(text) file.write('\n') file.close() def main(): start = '2020-02-17' end ... -
b站弹幕 so文件解析/逆序列化
2022-04-22 18:04:24弹幕so文件的逆序列化 -
爬取b站弹幕做成词云.py
2021-06-17 00:17:34用宋浩老师的视频爬取弹幕数据,然后做成词云显示 -
爬取B站弹幕
2019-01-18 16:59:51最近几天学习爬虫,便爬取了B站的弹幕,本篇博文记录的是爬取弹幕的方法一,近期会更新方法二。 下面是流程: 1.随意打开一个B站视频,按F12,点开network按键,在左上方的输入区输入 list 便可找到相应的弹幕... -
完全小白篇-用python爬取B站弹幕(非彩色弹幕以及尝试生成词云图)
2020-08-31 16:23:23关于B站的弹幕,其实一个系列视频的弹幕是可以在其中任何一集视频就能得到的,所以这篇文章的目的并不完全算是python教程,而只是告诉大家怎么找弹幕在哪以及生成词云图。 以“小甲鱼”的python教程系列为例,我们... -
受限于弹幕池的数量,没有办法可以爬取到B站更多的弹幕呢?
2020-12-01 16:36:49本文的文字及图片来源于网络,仅供学习、交流使用,不具有...想必小破站大家都很熟悉叭,里面充满了各种神奇的视频,其中的「弹幕」成为了许多人的快乐源泉。关于它的爬虫也有很多,但大部分都受限于弹幕池的数量,只能. -
Python爬虫爬取Bilibili弹幕过程解析
2020-09-18 14:21:55主要介绍了Python爬虫爬取Bilibili弹幕过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 -
python B站弹幕分析工具.zip
2020-08-31 20:13:47计算机基础课的大作业,简易的B站弹幕分析工具,通过GUI界面的形式可以做出词云图,统计出高频词汇并做出柱状图,除此之外还有很多功能。 -
B站视频弹幕的爬取和绘制词云图
2020-08-11 21:43:01b = [] for i in ZM: with open("B站弹幕.csv","a",newline="",encoding="utf-8-sig") as f: writer = csv.writer(f) writer.writerow([i]) 2.绘制词云图 突出文章的关键词,词出现频率越大,在图中显示的就越大。 ... -
Python爬虫之bilibili视频弹幕爬取并保存为JSON格式(详解+代码实现)
2020-12-22 13:29:48今天我们的爬虫内容是bilibili视频弹幕爬取,并保存到本地为JSON格式,正常爬虫只需要发送请求,解析相应内容,而爬取bilibili的内容,视频弹幕并没在响应的html中,而是保存在一个响应的url中,以XML格式保存,... -
爬取B站弹幕并制作词云分析.zip
2021-07-24 21:52:29https://blog.csdn.net/skylibiao/article/details/119060357?spm=1001.2014.3001.5502 -
idea创建python项目并实现爬虫B站弹幕生成词云
2020-02-03 19:48:03准备工作 下载安装python https://www.python.org/ 下载python并安装,本文章基于python 3.8.1 idea安装python插件 idea找到settings,进入并搜索python插件安装。...B站弹幕爬虫 ...至于B站弹幕爬虫,我们... -
如何爬取B站弹幕
2020-11-22 17:35:36前言主要记录自己完成爬虫的思路:从how to do到what to do这是一个拿 python 练手的项目,虽说是入门级,... 弹幕究竟是什么玩意首先,让我们看看B站客户端是如何接收到弹幕的这就需要让我们看看网页的源代码了随便...