1、简介
Python爬取豆瓣评分并使用wordCloud词云库展示
2、库说明
wordCloud词云绘图库参数简介:
Parameters
| ----------
| font_path : string
| 使用的字体库
| width : int (default=400)
| 图片宽度
| height : int (default=200)
| 图片高度
| mask : nd-array or None (default=None)
| 图片背景参考形状
| scale : float (default=1)
| 图幅放大、缩小系数
| min_font_size : int (default=4)
| 最小的字符
| min_font_size : int (default=4)
| 最大的字符
| max_words : number (default=200)
| 最多显示的词数
| stopwords : set of strings or None
| 不需要显示的词
| background_color : color value (default="black")
| 背景颜色
| ......
3、代码实现
### 爬取豆瓣数据,也可以是任意经过分词处理后的文本数据
# -*-coding:utf-8-*-
import urllib.request
from bs4 import BeautifulSoup
def getHtml(url):
"""获取url页面"""
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36'}
req = urllib.request.Request(url,headers=headers)
req = urllib.request.urlopen(req)
content = req.read().decode('utf-8')
return content
def getComment(url):
"""解析HTML页面"""
html = getHtml(url)
soupComment = BeautifulSoup(html, 'html.parser')
comments = soupComment.findAll('span', 'short')
onePageComments = []
for comment in comments:
# print(comment.getText()+'\n')
onePageComments.append(comment.getText()+'\n')
return onePageComments
if __name__ == '__main__':
f = open('我不是药神page10.txt', 'w', encoding='utf-8')
for page in range(10): # 豆瓣爬取多页评论需要验证。
url = 'https://movie.douban.com/subject/26752088/comments?start=' + str(20*page) + '&limit=20&sort=new_score&status=P'
print('第%s页的评论:' % (page+1))
print(url + '\n')
for i in getComment(url):
f.write(i)
print(i)
print('\n')
### 词云展示
#-*-coding:utf-8-*-
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from scipy.misc import imread
import jieba
text = open("我不是药神page10.txt","rb").read()
#结巴分词
wordlist = jieba.cut(text,cut_all=True)
wl = " ".join(wordlist)
#print(wl)#输出分词之后的txt
#把分词后的txt写入文本文件
#fenciTxt = open("fenciHou.txt","w+")
#fenciTxt.writelines(wl)
#fenciTxt.close()
#设置词云
wc = WordCloud(background_color = "white", #设置背景颜色
# mask = imread('shen.jpg'), #设置背景图片
max_words = 2000, #设置最大显示的字数
stopwords = ["的", "这种", "这样", "还是", "就是", "这个"], #设置停用词
font_path = "C:\Windows\Fonts\simkai.ttf", # 设置为楷体 常规
#设置中文字体,使得词云可以显示(词云默认字体是“DroidSansMono.ttf字体库”,不支持中文)
max_font_size = 60, #设置字体最大值
random_state = 30, #设置有多少种随机生成状态,即有多少种配色方案
)
myword = wc.generate(wl)#生成词云
wc.to_file('result.jpg')
#展示词云图
plt.imshow(myword)
plt.axis("off")
plt.show()