实例1:
三国演义top10人物分析
import jieba
from wordcloud import WordCloud
import imageio
#读取文件
mask = imageio.imread('china.jpg')
with open('novel/threekingdom.txt','r',encoding='UTF-8') as f:
data = f.read()
#分词
words_list = jieba.lcut(data)
print(words_list)
#构建一个集合,定义无关词
excludes = {"将军","却说","二人","不可","荆州","不能","如此","丞相","商议",
"如何","主公","军士","军马","左右","次日","引兵","大喜","天下","东吴","于是","今日"
,"不敢","魏兵","陛下","都督","人马","不知","孔明曰","玄德曰","云长","刘备"}
#构建一个容器,存储我们要的数据
#{"夏侯渊":34,"害怕":33....}
counts = {}
#遍历word_list 目标是筛选出人名
for word in words_list:
#print(word)
if len(word)<= 1:
#过滤无关词语即可
continue
else:
#向字典counts里更新值
#counts[word]=字典里原来该次出现的次数 + 1
# counts[word] = counts[word] + 1
# counts["正文"] = counts["正文"] + 1
counts[word] = counts.get(word,0) + 1
# print(counts)
#将指向同一个人的词进行合并
counts['孔明'] = counts['孔明'] + counts['孔明曰']
counts['玄德'] = counts['玄德'] + counts['玄德曰'] + counts['刘备']
counts['关公'] = counts['关公'] + counts['云长']
#删无关词
for word in excludes:
del counts[word]
#排序筛选
#吧字典转化成列表[(),()] [{},{}]
items = list(counts.items())
#按照词频次数进行排序
items.sort(key=lambda x:x[1],reverse=True)
#显示出现词语前10的词
#role_list = []
# role_list = ["孔明","孔明",。。。]
role_list = []
for i in range(10):
#将返回的数据拆开,拆包
#print(items[i])
role,count = items[i]
print(role,count)
#i临时文件如果不需要的话可以写成_
#优点是让读代码的人能够清晰的知道此处不需要使用i
for _ in range(count):
role_list.append(role)
print(role_list)
#将列表变成字符串
#text = "孔明 孔明 孔明 孔明...刘备 刘备 刘备 曹操 曹操"
text= " ".join(role_list)
print(text)
#展示
WordCloud(
background_color='white',
mask=mask,
font_path='msyh.ttc',
#是否包含两个词的搭配 设置为false即可
collocations=False
).generate(text).to_file('三国人物前十展示.png')
实例2:
红楼梦人物top10分析
import jieba
from wordcloud import WordCloud
import imageio
#读取
mask=imageio.imread('china.jpg')
with open('novel/hongloumeng.txt','r',encoding='UTF-8') as f:
data = f.read()
#分词
words_list = jieba.lcut(data)
print(words_list)
#构建一个集合,输入无关词
excludes = {'什么','一个','我们','你们','如今','说道','知道','姑娘','起来',
'这里','出来','众人','那里','奶奶','自己','太太','一面','只见','两个',
'两个','怎么','不是','不知','这个','听见','这样','进来','咱们','就是',
'没有','东西','告诉','回来','只是','大家','老爷','只得','丫头',
'这些','他们','不敢','出去','所以','宝二爷','老太太','王熙凤',
'姨太太','林黛玉','林妹妹','薛宝钗','贾宝玉'
}
#创建字典
counts = {}
#筛选并增加字典
for word in words_list:
if len(word) < 2:
continue
else:
counts[word] = counts.get(word,0) + 1
#合并词
counts['宝玉'] =counts['宝玉']+ counts['贾宝玉'] +counts['宝二爷']
counts['贾母'] = counts['贾母']+counts['老太太']
counts['凤姐'] = counts['凤姐']+counts['王熙凤']
counts['薛姨妈'] =counts['薛姨妈']+ counts['姨太太']
counts['黛玉'] = counts['黛玉']+counts['林黛玉'] + counts['林妹妹']
counts['宝钗'] =counts['宝钗']+ counts['薛宝钗']
#删除无关词
for word in excludes:
del counts[word]
#排序(列表排序)
#字典转换成列表
items = list(counts.items())
#按照词出现的频数排序
items.sort(key=lambda x:x[1],reverse=True)
print(items)
#显示出现词语前10的词(经过多次前20的运行,最后得出10个)
#建立一个列表
role_list=[]
for i in range(10):
#将返回的数据拆开,变成列表
role,count = items[i]
print(role,count)
#将返回数据拆开,并将role放到role_list列表中
for _ in range(count):
role_list.append(role)
print(role_list)
#将列表变成字符串
text = " ".join(role_list)
print(text)
#展示成词云
WordCloud(
background_color='white',
mask=mask,
font_path='msyh.ttc',
collocations=False
).generate(text).to_file('红楼梦人物前十展示.png')
爬虫
爬虫需要的技术栈
-APP爬虫==》处理
-基础爬虫模块==》
1、requests
2、lxml
3、beautifulsoup
4、正则表达式
-scrapy 爬虫框架==》mogodb等nosql数据库
浏览器
1、HTML==>结构+骨架
HTML:超文本标记语言;特点:标签形式存在(大多数以标签对)
2、css==》美化(以后会用到css属性)
3、javascript==》动态(解释型语言:运行解释;还有另外一种叫编译语言:先编译)
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--<h1>欢迎来到王者荣耀</h1>
标题标签,和我们学的markdown中的# 是一个意思
<h2>欢迎来到王者荣耀</h2>
<p>adssafasgsh</p>
-->
<!--<h1>习近平主持中央政治局会议 讨论拟提请十九届四中全会审议的文件</h1>-->
<!--<hr>-->
<!--<p>2019年10月24日 14:25 新华网</p>-->
<!--<hr>-->
<!--<p> 原标题:中共中央政治局召开会议 讨论拟提请十九届四中全会审议的文件 <br>-->
<!-- <br>新华社北京10月24日电 中共中央政治局10月24日召开会议,研究坚持和完善中国特色社会主义制度、推进国家治理体系和治理能力现代化若干重大问题。中共中央总书记习近平主持会议。</p>-->
<!--<img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1571915434777&di=1534151ba73e9c501ce635676b287d5f&imgtype=0&src=http%3A%2F%2Fimg.zcool.cn%2Fcommunity%2F01aec558ad2b0fa801219c77a938ce.jpg%40900w_1l_2o_100sh.jpg" alt="图片不见了"><br>-->
<!--<br><img src="./image/timg.jpg" alt="图片不见了">-->
<!--<ul>-->
<!-- <li>鲁班大师</li>-->
<!-- <li>狄仁杰</li>-->
<!--</ul>-->
<!--<ol>-->
<!-- <li>米莱狄</li>-->
<!-- <li>后裔</li>-->
<!--</ol>-->
<!--<div>爬虫的学习先要了解网页标签结构</div>王者荣耀-->
<!--<!–<div>爬虫的学习先要了解网页标签结构</div>王者荣耀–>-->
<!--<!–<div></div>–>-->
<!--<!–<div>王者荣耀</div>–>-->
<!--<div>-->
<!-- <p>王者荣耀</p>-->
<!-- <img src="./image/timg.jpg" alt="图片不见了">-->
<!--<!– a标签用于链接–>-->
<!-- <a href="http://www.baidu.com">点击跳转至东软官网</a>-->
<!--</div>-->
实现点击鲁班七号或者他的头像,都可跳转该英雄的详细介绍页
<li>
<a href="https://pvp.qq.com/web201605/herodetail/112.shtml">
<img src="./image/112.jpg" alt="">
鲁班大师
</a>
</li>
</body>
</html>