机器学习实战篇:Python爬取豆瓣评分并使用wordCloud词云库展示

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()

4、结果展示

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值