首先带着大家分析下词云:
词云图又叫文字云,是对文本数据中出现频率较高的关键词予以视觉上的突出,形成"关键词的渲染"就类似云一样的彩色图片,从而过滤掉大量的文本信息,,使人一眼就可以领略文本数据的主要表达意思。
看一些百度的词云图片就知道什么啦,今天我们就讲评论词汇生成词云图
![9323765bcfc68afc127364c62181154a.png](https://i-blog.csdnimg.cn/blog_migrate/b7d49198e1de85fff3ee5468a2e3a543.jpeg)
首先我们爬取的链接是:
微博m.weibo.cn这个大家可以看出是m开头的链接,说明是手机端的,手机端的也说下
![9d1015371cffe6b52e634903c55416e0.png](https://i-blog.csdnimg.cn/blog_migrate/fea1ba696f829844c1aa12cb2327855c.jpeg)
这个规律实在不方便分析?但是还有更简单的我们何必花很多时间研究这个哈哈(有点偷懒)
我们于是找到了这个链接:
微博weibo.cn这个链接大家发现不m开头的,是电脑端的,截图大家看一下
![f199238c7fb740f0baaa7b088e299600.png](https://i-blog.csdnimg.cn/blog_migrate/f5d52def9258c1ed0057734693e5e107.jpeg)
大家可以看到内容是一致的,但是页面效果可能low一些,但是不影响我们获取评论就行啦
![07c49670a6d183603aa480473a4fa071.png](https://i-blog.csdnimg.cn/blog_migrate/e323da0c72e2eb7685dac207907634ec.jpeg)
大家可以发现有页码的变化,因此分析出:
https://weibo.cn/comment/IzsurtGcv?uid=1644489953&rl=0&page=1
https://weibo.cn/comment/IzsurtGcv?uid=1644489953&rl=0&page=2
我们只要循环的获取就可以了。
import time
import requests
from bs4 import BeautifulSoup
headers ={
'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
'accept-language':'zh-CN,zh;q=0.9',
'cache-control':'max-age=0',
'cookie':'ALF=1587263529; _T_WM=98012988932; SUB=_2A25zcBXjDeRhGeBI6lMS-SnNwjiIHXVQmrurrDV6PUJbkdANLWLVkW1NRryekjjW7K01YTgDTWaldRtUKap4aqOS; SUHB=09P9rXjh_9wMmP; SCF=AgOabTn6Fb5gHUI6gnRn-uXK4LjyzBuKwBvG7NVXp5smWGjQ-X0wM7rEFzDX9QI5nZ3OD0lQwDXAU3nlqvwVeMg.; SSOLoginState=1584686515; MLOGIN=1; M_WEIBOCN_PARAMS=oid%3D4484509997073735%26luicode%3D20000061%26lfid%3D4484509997073735',
'upgrade-insecure-requests':'1',
'user-agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'
}
for i in range(1,50):
url = 'https://weibo.cn/comment/IzsurtGcv?uid=1644489953&rl=0&page='+str(i)
response = requests.get(url,headers=headers)
html = response.text
print(html)
soup = BeautifulSoup(html,'html.parser')
comment_list = soup.find_all(class_='ctt')
with open('comments.txt','a') as writer: # 注意是append追加形式
for comment in comment_list: # 遍历评论
# 获取评论信息
com = comment.get_text()
print(com)
# 评论中有:"回复@断流年举樽祭:因为贵" 只要:后面的内容
if ":" in com:
com = com.split(":")[-1]
# 写入文件,注意一个评论一行
writer.write(com+'n')
print('保存完第%d页'% i)
time.sleep(3)
注意:使用了bs4获取评论内容。
下面我们生成词云图片,我们会用到jieba库和wordCloud
pip install jieba
pip install wordcloud
装完之后我们就可以使用啦!
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
font_path = '/Library/Fonts/Arial Unicode.ttf' # 字体的路径如果是windows系统就写你的字体路径就可以
# 打开文本
text = open('comments.txt','r').read() # 读取评论保存页面
# 中文分词 通过jieba分词
text = ' '.join(jieba.cut(text))
# 生成对象
mask = np.array(Image.open('res/china.jpg'))
wc = WordCloud(mask=mask, font_path=font_path,mode='RGBA',background_color=None).generate(text)
# 显示词云
plt.imshow(wc, interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存词云
wc.to_file('wordcloud.png')
生成的图片如下:
![77cadc2bf292b99407129edf4a7d78cf.png](https://i-blog.csdnimg.cn/blog_migrate/bd9770d12ed639b77ea55e4d8a6fa842.jpeg)