第九节 jieba模块
一、jieba库
库的名称:jieba
作用:第三方中文分词库
导库方法:
import jieba
二、功能总结
1. lcut("字符串")
作用:将字符串分词
格式:txtList = jieba.lcut(txt)
参数为字符串,作用于分词存在列表里
import jieba
txt = "我喜欢学习编程"
txtList = jieba.lcut(txt)
print(txtList)
2. 使用字典统计词语出现次数
如果词语在字典中,那么词语的值加一(给字典的值加1)
如果词语不在字典中,那么词语的值设置为一(创建新的键值对)
for w in wordList:
if w in wordDict:
wordDict[w] = wordDict[w]+1
else:
wordDict[w] = 1
3. 列表元素连接成字符串
作用:用于连接列表的元素
格式:"".join(列表名)
前面为用于连接列表元素的字符,后面括号填写的参数为列表
newTxt = "".join(wordList)
4. open()
作用:读取xml文件
格式:with open("后浪弹幕.xml", "r", encoding="utf-8") as file:
第一个参数"后浪弹幕.xml"为文件名,第二个参数"r"为文件打开方式,第三个参数encoding="utf-8"表示编码方式
data = file.read()表示读取文件中的内容并保存在data中
with open("后浪弹幕.xml", "r", encoding="utf-8") as file:
data = file.read()
5. bs4库
作用:用来解析爬取的网页,提取信息
导库:import bs4
6. BeautifulSoup()
作用:将提取的xml文件变成解析对象
格式:soup = bs4.BeautifulSoup(data, "lxml")
soup是变量名,存储解析之后的内容
data是要解析的数据
"lxml"是解析器
import bs4
soup = bs4.BeautifulSoup(data, "lxml")
7. find_all()
作用:获取内容
格式:txt = soup.find_all(name="标签名",属性="属性名")
txt保存获取到的内容,是一个列表
find_all返回的是一个列表,里面存放所有符合条件的标签
name参数和属性参数可以根据需要选择一个或多个
常用的属性有id、class,注意class后面的 不能省略
txt = soup.find_all(name="d")
8. WordCloud().generate()
作用:生成词云
格式:WordCloud().generate(newTxt)
# 提取xml文件中文字的方法,词频分析
import bs4
import jieba
from wordcloud import WordCloud, ImageColorGenerator
from imageio import imread
from xes.tool import *
xopen() #打开文件夹
txtAll = ""
wordDict = {}
with open("后浪弹幕.xml", "r", encoding="utf-8") as file:
data = file.read()
soup = bs4.BeautifulSoup(data, "lxml")
txt = soup.find_all(name="d")
for line in txt:
print(line.text) # 输出弹幕
txtAll = txtAll + line.text
print("总字数为:", len(txtAll))
wordList = jieba.lcut(txtAll)
for w in wordList:
if w in wordDict:
wordDict[w] = wordDict[w]+1
else:
wordDict[w] = 1
print(wordDict)
print("总词数为:", len(wordDict))
# 制作词云图
newTxt = "".join(wordList)
img = imread("4.png")
myCloud = WordCloud(font_path="SongTi.otf",
background_color="black",
height=400,
width=200,
max_words=1000,
max_font_size=50,
min_font_size=4,
font_step=2,
mask=img
).generate(newTxt)
# 根据图片设置颜色
# imgColor = ImageColorGenerator(img)
# myCloud.recolor(color_func = imgColor)
myCloud.to_file("004.png")