项目背景:

本文通过抓取京东某笔记本的评论数据,简单从几个维度进行分析,并制作用户评论的词云图。

爬取数据:

商品链接

通过对商品评论页面进行探索,发现评论数据是通过发送请求,然后从数据库调取此商品的评论数据,返回的评论数据是Json格式。可以点击下一页,抓到发送请求的链接:
https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100012443350&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1

通过对以上链接进行分析,几个参数代表的含义:
**productId:**商品的ID,本项目就抓一个商品,ID不用变更。
**score:**评论类型(好:3、中:2、差:1、所有:0)
**sortType:**排序类型(推荐:5、时间:6)
**page:**第几页,京东只能抓100页的数据,不能抓到全部评论数据,就拿这一部分数据来探索下吧。
**pageSize:**每页显示多少条记录(默认10)

虽然限制只能抓取100页评论数据,但抓取过程还是很快的,没有遇到封IP的现象。
如果需要在京东上抓大量的其它数据,一般还是需要找代理IP的,不然抓不到几页就会被限。

本项目数据量比较小,抓到的数据直接存到csv文件里,再进行后续的进一步分析。

#爬取数据
import numpy as np
import pandas as pd
import requests
import json
#构建爬虫函数,这个爬取过程还是比较简单的。
def get_comments():#评论页是从数据库调用的,可以直接从下面这个链接,返回json格式评论数据url0=u'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100012443350&score=0&sortType=5&page={0}&pageSize=10&isShadowSku=0&rid=0&fold=1'#模拟浏览器访问header={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36'}for i in range(100):url=url0.format(i)response=requests.get(url,headers=header)#返回的json不是标准格式,把头/尾的字符去除json_response=response.text.replace('fetchJSON_comment98(','').replace(');','')#json转换为字典格式,读取评论数据json_response=json.loads(json_response)['comments']#提取出[用户id,用户名,购买时间,评价时间,商品Id,商品规格信息,用户评分,用户评论/追评]columns=['id','nickname','referenceTime','creationTime','referenceId','productColor','productSize','score','content']end_columns=['userId','userName','buyTime','commentTime','productId','productColor','productSize','score','comment','afterComment']#如下循环分别提取数据for j in range(10):userid=json_response[j][columns[0]]username=json_response[j][columns[1]]buytime=json_response[j][columns[2]]commenttime=json_response[j][columns[3]]productid=json_response[j][columns[4]]productcolor=json_response[j][columns[5]]productsize=json_response[j][columns[6]]score=json_response[j][columns[7]]comment=json_response[j][columns[8]]#有些用户没有追评,则返回空值try:aftercomment=json_response[j]['afterUserComment']['content']except:aftercomment=''#将以上提取出的数据放到一个列表里comment_one=[userid,username,buytime,commenttime,productid,productcolor,productsize,score,comment,aftercomment]#生成器返回提取出的列表数据yield (comment_one)#存入csv文件
import csv
path=r'E:\code\asus\asus_comments.csv'
end_columns=['userId','userName','buyTime','commentTime','productId','productColor','productSize','score','comment','afterComment']
def SaveCsv():comments=open(path,'w',newline='',encoding='utf-8')w=csv.writer(comments)w.writerow(end_columns)comments=get_comments()for comment in comments:w.writerow(comment)
#运行爬虫函数,爬取评论数据并保存
SaveCsv()

数据探索:

一.此款产品对应多种规格,哪种规格的评论数比较多?

侧面反映出:哪款规格的销量比较好。

#提取productId评论总数排名前十的产品及规格
t=raw_data[['productId']]
t['productCount']=1
t=t.groupby('productId').agg('sum').reset_index()
#按评论数从大到小排序
t=t.sort_values(by='productCount',ascending=False).reset_index(drop=True)
#提取排名前十的产品规格及评论数
t=t.iloc[:10,:]
#根据产品id提取产品规格
def get_product(id):productColor=raw_data[raw_data['productId']==id]['productColor']productColor.reset_index(drop=True,inplace=True)for i in range(len(productColor)):if len(productColor[i])>5:color=productColor[i]breakreturn colort['productColor']=t['productId'].apply(get_product)t


从上面结果可以看出:

1.最受用户欢迎的配置是:i7处理器;8G内存;512G固态硬盘;独立显卡。
这应该也是目前市场上的主流配置。
2.经济款:i5处理器;4G内存;256G固态硬盘;独立显卡。
这款配置低一档,但是价格也会低很多。这款产品适合向价格敏感性用户推广。

二.用户购买后多久会过来评价?

评价对于电商平台上的商品来说,是很重要的部分。而探索评价间隔天数,一方面从侧面反应出物流的速度,另一方面可以看到用户会不会及时来参与评价,可以对比销量数据,如果评价率过低,或者用户间隔很长时间才来评价,有必要制定相应的措施来促使用户及时评价。

#探索用户购买多少天后评价
from datetime import date
#计算日期间隔的函数
def get_gaptime(b_time,c_time):c_time=c_time.split(' ')[0]c_time=c_time.split('-')b_time=b_time.split(' ')[0]b_time=b_time.split('-')gaptime=(date(int(c_time[0]),int(c_time[1]),int(c_time[2]))-date(int(b_time[0]),int(b_time[1]),int(b_time[2]))).daysreturn gaptime
#计算日期间隔
gaptime=[]
for i in range(len(raw_data)):b_time=raw_data.loc[i,'buyTime']c_time=raw_data.loc[i,'commentTime']gap=get_gaptime(b_time,c_time)gaptime.append(gap)raw_data['gapTime']=pd.DataFrame(gaptime)
#探索间隔时间的描述性统计分布
raw_data['gapTime'].describe().reset_index()


从上面数据可以看到:

1.参与评价的用户中,25%的用户在购买后,两天内就评价了。侧面说明物流时效还是很快的,现实中京东笔记本一般购买后第二天就能到货。
2.参与评价的用户中,50%的用户在购买后,五天内评价。笔记本也算是大件商品,购买后需要使用几天,而5天并不算太长。
3.参与评价的用户中,25%的用户在购买后,12天以上才参与评价。这部分用户可能是属于比较谨慎的用户,要多用段时间,然后再根据实际使用情况评价商品。
上述指标,同时可以作为用户画像的一个维度。

三.绘制用户评论数据的词云图

词云图可以反映出用户比较关心的点,同时利于品牌方了解用户心理,营销中也可以主打这些特点进行推广。

另外可以专门针对差评做词云图,更能针对性的解决用户体验不好的问题。
这部分分析按照本文步骤,很容易进行,如果想探索,把上面抓取的初始链接改个参数就OK,其它代码基本不用动。

#用户评论数据的词云分析
import jieba
import wordcloud
from PIL import Image
import matplotlib.pyplot as plt
#合并用户评论及追评
raw_data['text']=raw_data.apply(lambda x:str(x['comment'])+';'+str(x['afterComment']),axis=1)
#评论中一些词是京东评论页面提供的格式,用户按照这个格式填写,这部分不应该作为用户评论的一部分,剔除掉
def del_list(str1):del_list=['运行速度:','屏幕效果:','散热性能:','外形外观:','轻薄程度:','其他特色:']for i in del_list:str1=str1.replace(i,'')return str1
#剔除京东评论的固定格式词汇
raw_data['text']=raw_data['text'].apply(del_list)
#去除停用词
stopwords_dic=open(r'E:\python\stop_words\stop_words.txt','rb')
stopwords_content=stopwords_dic.read()
stopwords_lst=stopwords_content.splitlines()
stopwords_dic.close()
#下面列表是去除停用词后,通过观察,我们这个文本里还存在的一些停用词,加到停用词表里。
#其中'华硕'作为品牌名称,本来抓的就是华硕的笔记本,没有统计的必要。
add_stopword=[',',';','nan','\n','。','&','!','、','华硕','?','.','*']
#更新停用词表
stopwords_lst.extend(add_stopword)
#分词,并去除停用词。且同一个用户的评论内容,如果有重复词,也同时去除
raw_data['text_cut']=raw_data['text'].apply(lambda x:[i for i in set(jieba.cut(x)) if i not in stopwords_lst])
#把所有评论数据,汇总到一个列表里
text=[]
for i in raw_data['text_cut']:text.extend(i)
#构建词频-词典
dic=dict()
for i in text:if len(i) !=1:dic[i]=text.count(i)#dic = sorted(dic.items(),key=lambda x:x[1],reverse = True)  #可以通过词频排序,观察高词频的情况#定义词频背景,用的是华硕此款笔记本的一个图片
mask=np.array(Image.open(r'E:\code\asus\notebook.jpg'))
wc=wordcloud.WordCloud(font_path='C:/Windows/Fonts/simhei.ttf',  #设置字体格式mask=mask,  #设置背景图max_words=100,  #最多显示词数max_font_size=150)  #字体最大值
wc.generate_from_frequencies(dic)  #从字典生成词云
image_colors=wordcloud.ImageColorGenerator(mask)  #从背景图建立颜色方案
wc.recolor(color_func=image_colors)  #将词云颜色设置为背景图方案
plt.figure(figsize=(6,6))
plt.imshow(wc)  #显示词云
plt.axis('off')  #关闭坐标轴
plt.show()


从上面词云图可以看出:

用户评论比较多的点是:
开机/运行速度快;外观轻薄好看;屏幕清晰;散热不错;性价比高
这部分特点应该是产品的主要特点,在商品的标题及详情页描述中,可以针对性的进行优化。

上面就是简单的仅仅针对这款商品的评论数据进行探索分析,实际运用中,可以结合销量、用户信息等多维度数据进行更多角度的分析、探索。

京东商品评论分析(爬虫+分词+词云图)相关推荐

  1. 爬虫项目五:最详细的京东商品、评价爬虫、词云展示

    文章目录 前言 一.京东商品信息爬虫 1.分析URL 2.实例化chrome 3.加载完整数据 4.实现翻页 5.解析数据 二.京东商品评价爬虫 1.找到接口 2.分析url 3.解析数据 4.词云 ...

  2. pythonallowpos_利用Python抓取并分析京东商品评论数据

    2.1 内容简介 本章主要介绍如何利用Python抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色等颜色, 70B到90D ...

  3. python爬取页面内容由京东提_python制作爬虫爬取京东商品评论教程

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

  4. python新闻评论分析_使用 python 抓取并分析京东商品评论数据

    本篇文章是python爬虫系列的第三篇,介绍如何抓取京东商城商品评论信息,并对这些评论信息进行分析和可视化.下面是要抓取的商品信息,一款女士文胸.这个商品共有红色,黑色和肤色三种颜色, 70B到90D ...

  5. python制作爬虫爬取京东商品评论教程

    python制作爬虫爬取京东商品评论教程 作者:蓝鲸 类型:转载 本文是继前2篇Python爬虫系列文章的后续篇,给大家介绍的是如何使用Python爬取京东商品评论信息的方法,并根据数据绘制成各种统计 ...

  6. python爬取京东商品数据要先登录_京东商品评论情感分析|文本数据预处理

    本文爬取了十款热销手机的文本评论数据后,首先对文本评论数据做文本预处理,文本评论数据中存在大量的无价值信息,引入无用的文本数据,对其作情感分析,显然没有价值,得出的文本挖掘结果也不尽人意.所以对于文本 ...

  7. Python 爬取京东商品评论 + 词云展示

    利用python爬虫爬取京东商品评论数据,并绘制词云展示. 原文链接:https://yetingyun.blog.csdn.net/article/details/107943979 创作不易,未经 ...

  8. Python动态爬虫爬取京东商品评论

    Python 动态爬虫爬取京东商品评论 1. 概述 京东商城是Python爬虫初学者试手的经典平台,反爬虫程度较低,但评论采取了动态加载的方式,爬取京东商品评论是学习动态爬虫的一个极佳方法. 动态爬虫 ...

  9. 三只松鼠商品评论分析

    摘要 挖掘电商商品评论中的潜在价值不仅能为销售.顾客选购商品提供科学.可供决策的信息,而且有利于指导商品用户管理和改善商品用户体验.以网络爬取的三只松鼠商品评论为例,首先对其数据进行清洗,再使用Pyt ...

最新文章

  1. 所有你要知道的 BERT 模型压缩方法,都在这里!
  2. golang 字节切片 数组 字符串 互转
  3. OpenStack-MitakaCentos7.2双节点搭建--(二)Keystone(认证服务)
  4. sublime text 3170 破解工具
  5. sap 一代增强_SAP增强Enhancement
  6. android activity生命周期_Android岗高频面试题合一集,看你能答出几题?
  7. idea jdk编译报错解决办法
  8. 4.3. tensorflow2实现相关分析概述与简单相关系数计算——python实战
  9. 如何在 Mac 上卸载 Chrome?
  10. h3c交换机堆叠(IRF)配置三步完成
  11. mtk2503电流设定失败
  12. win7升级Internet Explorer 11 先决条件更新
  13. linux使用tar命令,Linux的tar命令使用简介
  14. 去吗?去啊!喜欢就不要再犹豫
  15. Real-Time Rendering 第五章 光照模型
  16. {转帖]图纸A0,A1,A2,A3,A4实际尺寸是多少?长和宽怎么分
  17. ViewFlipper动态加载View
  18. 正在保存备份的驱动器与启动计算机,如何备份Mac
  19. HTTP状态码 ---- 100至600 情况含义
  20. 机器视觉系列(二)——机械部分

热门文章

  1. 设计师Adobe国际认证证书有用吗?
  2. 高通开发笔记---yukon worknote
  3. ISCC线下赛参赛感悟
  4. 认知科学和认知神经科学_设计师认知科学阅读清单
  5. 利用python爬取飞猪信息_Python---20行代码爬取斗鱼平台房间数据(下)-阿里云开发者社区...
  6. Post Office
  7. 在vue中将数据导出为excel文件file-saver+xlsx+script-loader
  8. 用计算机弹出微微,电脑显示器轻微闪烁怎么办
  9. Atmel ATSAMV70Q20 的 CAN 扩展帧收发设置
  10. 开博第一文:成为软件奇才的五要素