python奇闻杂技05 爬虫初步学习+jieba分词+词云库+哔哩哔哩弹幕爬取示例(数据分析pandas)
结巴分词
import jieba """ pip install jieba 1、精确模式 2、全模式 3、搜索引擎模式 """ txt = '中国,是以华夏文明为源泉、中华文化为基础,并以汉族为主体民族的多民族国家,通用汉语、汉字,汉族与少数民族被统称为“中华民族”,又自称为炎黄子孙、龙的传人。' # 精确模式(没有冗余) # res = jieba.cut(txt) # 获取可迭代对象
res = jieba.lcut(txt) # 获取列表
result:
['中国', ',', '是', '以', '华夏', '文明', '为', '源泉', '、', '中华文化', '为', '基础', ',', '并', '以', '汉族', '为', '主体', '民族', '的', '多', '民族', '国家', ',', '通用', '汉语', '、', '汉字', ',', '汉族', '与', '少数民族', '被', '统称', '为', '“', '中华民族', '”', ',', '又', '自称为', '炎黄子孙', '、', '龙的传人', '。']
# 全模式 # res1 = jieba.cut(txt, cut_all=True) # 获取可迭代对象
res1 = jieba.lcut(txt, cut_all = True)
result:
['中国', '', '', '是', '以', '华夏', '文明', '明为', '源泉', '', '', '中华', '中华文化', '华文', '文化', '化为', '基础', '', '', '并以', '汉族', '为主', '主体', '民族', '的', '多', '民族', '国家', '', '', '通用', '汉语', '', '', '汉字', '', '', '汉族', '与', '少数', '少数民族', '民族', '被', '统称', '称为', '', '', '中华', '中华民族', '民族', '', '', '', '又', '自称', '自称为', '称为', '炎黄', '炎黄子孙', '子孙', '', '', '龙的传人', '传人', '', '']
# 搜索引擎模式 # res2 = jieba.cut_for_search(txt) # 获取可迭代对象
res2 = jieba.lcut_for_search(txt)
result:
['中国', ',', '是', '以', '华夏', '文明', '为', '源泉', '、', '中华', '华文', '文化', '中华文化', '为', '基础', ',', '并', '以', '汉族', '为', '主体', '民族', '的', '多', '民族', '国家', ',', '通用', '汉语', '、', '汉字', ',', '汉族', '与', '少数', '民族', '少数民族', '被', '统称', '为', '“', '中华', '民族', '中华民族', '”', ',', '又', '自称', '称为', '自称为', '炎黄', '子孙', '炎黄子孙', '、', '传人', '龙的传人', '。']
词云:
示例一:
五角星.jpg运行结果程序输出cy.png
# pip install wordcloud # from wordcloud import WordCloud # pip install scipy==1.2.0 #下载老版本,已装新版本会被覆盖,新版本没有该方法 # pip install imageio from wordcloud import WordCloud #导入子包,节约资源 import matplotlib.pyplot as plt #绘图分析模块 from scipy.misc import imread #用于读写图像 #from imageio import imread #可用imageio库替代scipy库 txt="life uis short you need python" txt1='中国,是以华夏文明为源泉、中华文化为基础' color_mask=imread('五角星.jpg') #项目内放入一张五角星.jpg wc= WordCloud(font_path=r'C:\Windows\Fonts\simkai.ttf', #windows自带字体文件路径 background_color='white', #设置背景色为白色 width=1080, height=960, min_font_size=4, #设定词云中最小字号,默认为4号 mask=color_mask #给定词云形状 ) wc.generate(txt1) #向WordCloud对象wc中加载文本txt1 wc.to_file('cy.png') #将词云输出为图像文件 plt.imshow(wc) plt.show() #显示图片
示例二:
运行结果输出小康社会.png
import jieba from wordcloud import WordCloud #导入子包,节约资源 import matplotlib.pyplot as plt #下载matplotlib包 from scipy.misc import imread
f = open('决胜全面建成小康社会.txt',encoding='utf-8') #打开指定txt文件,编码为utf-8 data = f.read() #读取文件内容 res=jieba.lcut(data) #精确分词,变为列表 result = ''.join(res) #把列表组合成字符串 color_mask = imread('五角星.jpg') #设定形状 wc = WordCloud(font_path = r'C:\Windows\Fonts\simkai.ttf', #windows内的字体文件 background_color = 'white', width = 1080, height = 960, mask = color_mask #给定词云形状 ) wc.generate(result) #向WordCloud对象wc中加载文本 wc.to_file('小康社会.png') #将词云输出为图像文件 plt.imshow(wc) plt.show() #显示图片
哔哩哔哩弹幕爬取示例:
sign.txt(中途生成,传入弹幕信息)
输出bili.png
""" pip install pandas 数据分析包 pip install bs4 HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据 pip install requests pip install lxml """ import requests from bs4 import BeautifulSoup import pandas as pd import datetime import re #用于正则表达式 from wordcloud import WordCloud import jieba from scipy.misc import imread import matplotlib.pyplot as plt header = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36' } #模拟浏览器访问 url = 'http://comment.bilibili.com/106015992.xml' #视频弹幕网页(下方标注B站弹幕来源) response = requests.get(url=url,headers=header) # 向对方服务器发送请求 response.encoding = response.apparent_encoding # 设置字符编码为获取网页当前编码格式 data = response.text #获取文本 soup = BeautifulSoup(data,'lxml') #只有lxml 解析,才能进行各种参数分析 d_list = soup.find_all('d') #获取所有的d标签 dlst = [] for i in d_list: # 循环拿出所有的d标签 danmu = {} danmu['弹幕'] = i.text #获取文本信息 # danmu['时间']=datetime.datetime.now() # danmu['路径']=url dlst.append(danmu) #添加到数组中 df = pd.DataFrame(dlst) #转换成二维数组,类似于execl表格 f = open('sign.txt','w',encoding = 'utf') #打开sign.txt文件,没有则自动生成文件 for i in df['弹幕'].values: # 循环所有的文本信息 pat = re.compile(r'[一-龥]+') #定义过滤数据的规则,[一-龥]代表所有的汉字 filter_data = re.findall(pattern = pat,string = i) # 执行过滤操作 f.write(''.join(filter_data)) #写入文本,样式如上图文本图片所示 f.close() #关闭txt文件 f = open('sign.txt', 'r', encoding='utf8') #打开sign.txt文件 data = f.read() #读取文本,传入data变量 result = ' '.join(jieba.lcut(data)) #把读取内容分词,然后用空格连接成字符串 f.close() #关闭txt文件 color_mask = imread('五角星.jpg') #设定形状 wc = WordCloud( font_path=r'C:\Windows\Fonts\simkai.ttf', #windows内的字体文件 width=1000, height=800, mask=color_mask, #给定词云形状 background_color='white' #设定词云背景为白色 ) wc.generate(result) #向WordCloud对象wc中加载文本 wc.to_file('bili.png') #将词云输出为图像文件 plt.imshow(wc) plt.show() # 显示图片
B站弹幕弹幕查找:
1.视频页面右键,点击查看源代码
2.在源码中搜索cid",找出对应ID
3.输入comment.bilibili.com/对应ID.xml 即可找到对应弹幕页面