博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【python3】爬取简书评论生成词云
阅读量:5966 次
发布时间:2019-06-19

本文共 2210 字,大约阅读时间需要 7 分钟。

一、起因:

      昨天在简书上看到这么一篇文章,看完之后个人是比较认同作者的观点。

     不过,翻了下评论,发现评论区争议颇大,基本两极化。好奇,想看看整体的评论是个什么样,就写个爬虫,做了词云。

二、怎么做:

     ① 观察页面,找到获取评论的请求,查看评论数据样式,写爬虫

     ② 用 jieba 模块,将爬取的评论做分词处理

     ③ 用 wordcloud 模块,生成词云

三、代码如下:      

#!/usr/bin/env python3# -*- coding: utf-8 -*-import requests,json,timeimport jiebaimport matplotlib.pyplot as pltfrom bs4 import BeautifulSoupfrom wordcloud import WordCloud,STOPWORDS,ImageColorGenerator# 存储爬取结果def write(path,text):    with open(path,'a', encoding='utf-8') as f:        f.writelines(text)        f.write('\n')# 爬取评论def getcomments(num,path):    url = 'https://www.jianshu.com/notes/23437010/comments?comment_id=&author_only=false&since_id=0&max_id=1586510606000&order_by=likes_count&page='+str(num)    response = requests.get(url).text    response = json.loads(response)    num = response['total_pages']    for i in response['comments']:        comment = BeautifulSoup(i['compiled_content'],'lxml').text        write(path,comment)    return num# jieba 分词def read(path):    text=''    with open(path, encoding='utf-8') as s:        for line in s.readlines():            line.strip()            text += ' '.join(jieba.cut(line))    return text# WordCloud 生成词云def wordcloud(imagepath):    backgroud_Image = plt.imread(imagepath)    wc = WordCloud(background_color='white',  # 设置背景颜色                   mask=backgroud_Image,  # 设置背景图片                   max_words=2000,  # 设置最大现实的字数                   stopwords=STOPWORDS,  # 设置停用词                   font_path='C:/Users/Windows/fonts/msyh.ttf',  # 设置字体格式,如不设置显示不了中文                   max_font_size=120,  # 设置字体最大值                   random_state=30,  # 设置有多少种随机生成状态,即有多少种配色方案                   )    wc.generate(text)    image_colors = ImageColorGenerator(backgroud_Image)    wc.recolor(color_func=image_colors)    plt.imshow(wc)    plt.axis('off')    plt.show()if __name__ == '__main__':    path = '评论.txt' # 评论path    imagepath = 'heart.jpg' #词云背景图path    print('正在爬取评论')    i,num=1,2    while i <= num:        num=getcomments(i,path) # 爬取评论        time.sleep(2)        i += 1    print('正在分词处理')    text = read(path)  # jieba 分词处理    print('正在生成词云')    wordcloud(imagepath) # WordCloud 生成词云    print('词云生成成功')

效果:

转载于:https://www.cnblogs.com/TurboWay/p/8435355.html

你可能感兴趣的文章
windows下用php开发类似百度文库应用需要的工具和问题
查看>>
union 关键字
查看>>
用逻辑回归对用户分类 (理论+实战)
查看>>
css模拟select设置高度在ie67下有效(也可作为去除边框)
查看>>
20步打造最安全的Nginx Web服务器
查看>>
创建可用实验快照(二)
查看>>
开源社交系统ThinkSNS——社交与电商的结合
查看>>
MySQL双主(master-master)补充
查看>>
ldap添加自定义字段
查看>>
Vertically aligning HTML
查看>>
Linux之cut命令
查看>>
jedis 用连接池时超时返回值类型错误
查看>>
nginx 查看每秒有多少访问量
查看>>
python正则表达式
查看>>
安装nagios中php安装报错 configure error xml2-config not foud
查看>>
php邮件发送类
查看>>
Python算法题----在列表中找到和为s的两个数字
查看>>
Gson解析Json
查看>>
Spring Cloud with Turbine
查看>>
关于Java浮点数运算精度丢失问题
查看>>