评论数据获取、词频统计、词云图
# coding: utf-8
# In[2]:
import urllib.request
import re
import requests
import time
import random
import json
# 设置请求头
headers = ('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36')
opener = urllib.request.build_opener()
opener.addheaders = [headers]
urllib.request.install_opener(opener)
# 获取URL
url = 'https://sclub.jd.com/comment/productPageComments.action?callback=&productId=100002749549&score=0&sortType=5&pageSize=10&isShadowSku=0&fold=1'
f = open('E:/comments/华为P30.txt', 'w', encoding='utf-8')
for i in range(0, 20):
t = str(time.time()*1000).split('.')
pagram = {
'page': i+1,
'callback': 'fetchJSON_comment98vv4092%s' % (int(t[1])+1)
}
# print(pagram)
# 随机休眠 行为分析
time.sleep(random.random())
# 发送http请求
response = requests.get(url, params=pagram)
# 入库,文件
data = response.text
# 解析数据
data = re.findall(r'{.*}', data)[0]
# 格式成字典
data = json.loads(data)
data = data['comments']
comment_data = {}
for item in data:
comment_data['手机型号'] = item['referenceName']
comment_data['昵称'] = item['nickname']
comment_data['评论内容'] = item['content']
f.write('手机型号:'+item['referenceName']+'\n'+'昵称:'+item['nickname']+'\n'+'评论内容:'+item['content']+'\n')
f.close()
# In[12]:
import jieba
# 评论内容进行去重
def quchong(infile, outfile):
infopen = open(infile, 'r', encoding='utf-8')
outopen = open(outfile, 'w', encoding='utf-8')
lines = infopen.readlines()
list_1 = []
for line in lines:
if line not in list_1:
list_1.append(line)
outopen.write(line)
infopen.close()
outopen.close()
quchong("E:/comments/华为P30.txt", "E:/comments/P30去重.txt")
# jieba.load_userdict('userdict.txt')
# 创建停用词list
def stopwordslist(filepath):
stopwords = [line.strip() for line in open(filepath, 'r', encoding='utf-8').readlines()]
return stopwords
# 对评论内容进行分词
def seg_sentence(sentence):
sentence_seged = jieba.cut(sentence.strip())
stopwords = stopwordslist('E:/comments/cn_stopwords.txt') # 这里加载停用词的路径
outstr = ''
for word in sentence_seged:
if word not in stopwords:
if word != '\t':
outstr += word
outstr += " "
return outstr
inputs = open('E:/comments/P30去重.txt', 'r', encoding='utf-8')
outputs = open('E:/comments/P30分词.txt', 'w')
for line in inputs:
line_seg = seg_sentence(line) # 这里的返回值是字符串
outputs.write(line_seg + '\n')
outputs.close()
inputs.close()
print('分词完毕')
# In[14]:
# 词频统计
import jieba.analyse
from collections import Counter # 词频统计
with open('E:/comments/P30分词.txt', 'r', encoding='utf-8') as fr:
data = jieba.cut(fr.read())
data = dict(Counter(data))
with open('E:/comments/P30词频.txt', 'w', encoding='utf-8') as fw: # 读入存储wordcount的文件路径
for k, v in data.items():
fw.write('%s, %d\n' % (k, v))
# In[18]:
import jieba.analyse
import matplotlib.pyplot as plt
from wordcloud import WordCloud
# 生成词云
with open('E:/comments/P30词频.txt',encoding='utf-8') as f:
# 提取关键词
data = f.read()
keyword = jieba.analyse.extract_tags(data, topK=50, withWeight=False)
wl = " ".join(keyword)
# 设置词云
wc = WordCloud(
# 设置背景颜色
background_color = "white",
# 设置最大显示的词云数
max_words=2000,
# 这种字体都在电脑字体中,一般路径
font_path='C:/Windows/Fonts/simfang.ttf',
height=1200,
width=1600,
# 设置字体最大值
max_font_size=100,
# 设置有多少种随机生成状态,即有多少种配色方案
random_state=30,
)
myword = wc.generate(wl) # 生成词云
# 展示词云图
plt.imshow(myword)
plt.axis("off")
plt.show()
wc.to_file('E:/comments/P30.png') # 把词云保存下
评论数据获取、词频统计、词云图相关推荐
- 文本挖掘(超详细:数据获取 - 数据清洗 - 中文分词 - 去除停用词 - 词频统计 - 词云图 - 情感分析)
文本挖掘(超详细) 朋友们好,文本挖掘这篇文章写了也有一段时间了,承蒙朋友们的厚爱,作者后面有做过一个升级版的文本挖掘,但苦于没有时间一直没有更新,现在在抽时间把后面写的这个也发布出来,两篇文章的步骤 ...
- python爬取《三国演义》小说统计词频生成词云图
python爬取<三国演义>小说&统计词频&生成词云图 注意点: 爬取小说正文时用的正则表达式涉及到多行匹配.需要开启多行模式(?s) book_content_re = ...
- 京东商品评论分析(爬虫+分词+词云图)
项目背景: 本文通过抓取京东某笔记本的评论数据,简单从几个维度进行分析,并制作用户评论的词云图. 爬取数据: 商品链接 通过对商品评论页面进行探索,发现评论数据是通过发送请求,然后从数据库调取此商品的 ...
- 爬取网易云某歌曲所有评论,并输出词云图
声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 项目场景: 我上一篇文章写了网易云参数的解密,这次我们来爬取画画的baby的全部评论. 解决方案: 1.先来看看评 ...
- 对京东商品评论进行词频统计并制作词云
上一篇我们利用requests对京东商品的评论进行采集,今天我们对采集结果进行词频统计,并制作词云图片. 一.安装依赖 首先安装jieba,wordcloud第三方库,并将其导入. 二.分词 利用ji ...
- 微博评论爬虫 | 情感分析 | 词云图展示
目录 1. 数据获取部分 实验环境 数据获取目标 抓包 PC端和移动端分析 抓取到的目标链接 分析评论信息存储位置 爬虫结果 2. 情感分析部分 数据准备 主要代码 效果 3. 词云图部分 主要代码 ...
- Python 每日一记217根据词频生成词云图
一.问题描述 以上数据是会员的每一笔消费,我想看部类的词云图. 词云图有两种做法: 第一种是针对文本的,就是一堆话,先jieba分词,然后在进行词云图的绘制: 第二种就是根据已知的词频进行绘制,这就正 ...
- 爬取网易云音乐歌曲评论并生成特定词云图
import requests import json import jsonpath import csv import time import jieba import numpy # 图片的转换 ...
- Python——爬取某瓣电影评论信息并生成词云图
- python词云图词频统计
目录 一:安装必要的库 二:数据分析 条形图可视化 三:数据分析 词频统计 词云图可视化 一:安装必要的库 导入必要的库 import collections # 词频统计库 import os im ...
最新文章
- vs开发人员命令查看C++类 data member 内存布局
- jquery~ajax()学习
- Ubuntu19.04安装mysql8.0版本(亲测OK)
- java 定义和导入包
- mysql连表的sql语句_sql语句之连表操作
- java 创建本地文件、写入文本内容、调用IE浏览器打开
- 有赞实时任务优化:Flink Checkpoint 异常解析与应用实践
- 程序员学习资料(2)—硅谷之火,Html Css,python,mysql 等
- 下载网页上的视频、音频文件
- excel统计填充色单元格数
- 基于C++实现的运动会统分系统
- 安卓比较好的数独软件_有没有比较好的数独游戏APP?
- html5 模板 知乎,Discuz贴吧知乎超级v2ex UTF(x520_v2ex)_Discuz模板_Discuz应用中心
- 【Google Chrome】打开本地html文件报错问题
- Pack up your loved ones 带上至亲至爱
- C#实现平面图形图像缩放、平移、自定义坐标系
- thinkPHP基于php的枣院二手图书交易系统--php-计算机毕业设计
- 生命探测仪能穿墙能探废墟 但不能穿透金属(图)
- 【第一个项目开发】创建domain包中的类
- [nonebot2]QQ机器人签到插件
热门文章
- Springboot 使用Mybatis对postgreSQL实现CRUD
- [Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
- 云平台需要开发的底层功能
- HDU-4089 Activation (概率DP求概率)
- Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系...
- 教你遇事最有水平的处理方法
- CSS 实现加载动画之五-光盘旋转
- this和arguments
- python笔记(五) - 获取对象的引用
- C语言实现树,你一定看得懂