# 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')  # 把词云保存下

评论数据获取、词频统计、词云图相关推荐

  1. 文本挖掘(超详细:数据获取 - 数据清洗 - 中文分词 - 去除停用词 - 词频统计 - 词云图 - 情感分析)

    文本挖掘(超详细) 朋友们好,文本挖掘这篇文章写了也有一段时间了,承蒙朋友们的厚爱,作者后面有做过一个升级版的文本挖掘,但苦于没有时间一直没有更新,现在在抽时间把后面写的这个也发布出来,两篇文章的步骤 ...

  2. python爬取《三国演义》小说统计词频生成词云图

    python爬取<三国演义>小说&统计词频&生成词云图 注意点: 爬取小说正文时用的正则表达式涉及到多行匹配.需要开启多行模式(?s) book_content_re = ...

  3. 京东商品评论分析(爬虫+分词+词云图)

    项目背景: 本文通过抓取京东某笔记本的评论数据,简单从几个维度进行分析,并制作用户评论的词云图. 爬取数据: 商品链接 通过对商品评论页面进行探索,发现评论数据是通过发送请求,然后从数据库调取此商品的 ...

  4. 爬取网易云某歌曲所有评论,并输出词云图

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! 项目场景: 我上一篇文章写了网易云参数的解密,这次我们来爬取画画的baby的全部评论. 解决方案: 1.先来看看评 ...

  5. 对京东商品评论进行词频统计并制作词云

    上一篇我们利用requests对京东商品的评论进行采集,今天我们对采集结果进行词频统计,并制作词云图片. 一.安装依赖 首先安装jieba,wordcloud第三方库,并将其导入. 二.分词 利用ji ...

  6. 微博评论爬虫 | 情感分析 | 词云图展示

    目录 1. 数据获取部分 实验环境 数据获取目标 抓包 PC端和移动端分析 抓取到的目标链接 分析评论信息存储位置 爬虫结果 2. 情感分析部分 数据准备 主要代码 效果 3. 词云图部分 主要代码 ...

  7. Python 每日一记217根据词频生成词云图

    一.问题描述 以上数据是会员的每一笔消费,我想看部类的词云图. 词云图有两种做法: 第一种是针对文本的,就是一堆话,先jieba分词,然后在进行词云图的绘制: 第二种就是根据已知的词频进行绘制,这就正 ...

  8. 爬取网易云音乐歌曲评论并生成特定词云图

    import requests import json import jsonpath import csv import time import jieba import numpy # 图片的转换 ...

  9. Python——爬取某瓣电影评论信息并生成词云图

  10. python词云图词频统计

    目录 一:安装必要的库 二:数据分析 条形图可视化 三:数据分析 词频统计 词云图可视化 一:安装必要的库 导入必要的库 import collections # 词频统计库 import os im ...

最新文章

  1. vs开发人员命令查看C++类 data member 内存布局
  2. jquery~ajax()学习
  3. Ubuntu19.04安装mysql8.0版本(亲测OK)
  4. java 定义和导入包
  5. mysql连表的sql语句_sql语句之连表操作
  6. java 创建本地文件、写入文本内容、调用IE浏览器打开
  7. 有赞实时任务优化:Flink Checkpoint 异常解析与应用实践
  8. 程序员学习资料(2)—硅谷之火,Html Css,python,mysql 等
  9. 下载网页上的视频、音频文件
  10. excel统计填充色单元格数
  11. 基于C++实现的运动会统分系统
  12. 安卓比较好的数独软件_有没有比较好的数独游戏APP?
  13. html5 模板 知乎,Discuz贴吧知乎超级v2ex UTF(x520_v2ex)_Discuz模板_Discuz应用中心
  14. 【Google Chrome】打开本地html文件报错问题
  15. Pack up your loved ones 带上至亲至爱
  16. C#实现平面图形图像缩放、平移、自定义坐标系
  17. thinkPHP基于php的枣院二手图书交易系统--php-计算机毕业设计
  18. 生命探测仪能穿墙能探废墟 但不能穿透金属(图)
  19. 【第一个项目开发】创建domain包中的类
  20. [nonebot2]QQ机器人签到插件

热门文章

  1. Springboot 使用Mybatis对postgreSQL实现CRUD
  2. [Swift实际操作]八、实用进阶-(7)使用通知的方法进行对象间的消息传递
  3. 云平台需要开发的底层功能
  4. HDU-4089 Activation (概率DP求概率)
  5. Objective-C之MRC、ARC模式下,属性修饰关键字strong、retain、assign、weak的区别和联系...
  6. 教你遇事最有水平的处理方法
  7. CSS 实现加载动画之五-光盘旋转
  8. this和arguments
  9. python笔记(五) - 获取对象的引用
  10. C语言实现树,你一定看得懂