华为mate10于10月20开售,作为mate9的升级机型、华为首款AI芯片全面屏手机,mate10备受关注,现需了解用户对mate10的使用感受及评价,使用python工具爬取京东官网评论数据,对评论数据进行文本分析,以便客观了解用户使用体验,对下一代机型的改进提供依据。

1. 查看京东官网mate10评价记录

京东mate10评论分析京东mate10评论分析

 
一共有4.2+W条评论记录,晒图记录500条,追评200+,中评100+,差评100+
对评论进行翻页操作发现京东只提供了100页的评论记录,中评数据记录提供10页,差评数据记录提供10页。



2. 对评论页面代码进行分析

2.1使用Google Chorme浏览器来获取网页代码,分析代码结构。按F12查看,点击network选项,点击红点,按F5重新请求加载网页。
 京东mate10评论分析


2.2评论数据位于productPageComments.action?开头的script文件中

 京东mate10评论分析京东mate10评论分析

获取该文件请求地址:https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv8955&productId=5544068&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1。


在浏览器中粘贴改地址可发现的确为评论地址。

京东mate10评论分析

对该地址进行分析,变动其中page=0的数值参数,就是下一页的评论地址。
分析结果:评论主要数据都以(showOrderComment”:”)开头,以(”afterDays”)结尾【注意:】


2.3爬虫代码如下:

import pandas as pd 
import numpy as np
import time
import re,os
import requests
import jieba.analyse
from wordcloud import WordCloud
import matplotlib.pyplot as plt

### 网址部分(分为三部分):
url1 = 'https://sclub.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98vv7364&productId=5544068&score=0&sortType=5&page='
url2 = '&pageSize=10&isShadowSku=0&fold=1'

### 获取网页代码
for i in range(100):
    i = str(i)
    url = url1+i+url2
    print(url)
    html = requests.get(url).content
    time.sleep(0.2)
    with open('C:\XXX\JD_spyder.txt','ab') as f:
        f.write(html)

###  将爬取到数据存储到外部,方便下次直接读取
html =open("C:\XXX\JD_spyder.txt",encoding='gb18030').read()
print (html)

###  使用正则匹配匹配评论 
pattern1 = re.compile(u'showOrderComment.*?afterDays"')
content = re.findall(pattern1, html)


###  提取评论内容,机型颜色,机型版本,机型
contents = []
color = []
Size = []
saleValue = []
isMobile = []

###  爬取发现 代码中内容有些混乱,Size:中会出现标准版  和 64G ,128G的不同内容

                                                                   salevalue:中会出现标准版  和 64G ,128G的不同内容

###  爬取结束发现  size 为内存大小       则salevalue对应标准版
###                            size 为标准版版本   则salevalue为内存大小

for i in range(len(content)):
    contents.append(content[i].split('content":"')[1].split('","creationTime')[0])
    color.append(content[i].split('"productColor":"')[1].split('","productSize"')[0])
    Size.append(content[i].split('"productSize":"')[1].split('"')[0])
    saleValue.append(content[i].split('saleValue":"')[1].split('"')[0])

###    

data = pd.DataFrame(np.zeros((4685,5)))    
data.columns = ["content","productColor","productSize","saleValue","isMobile"]
data["content"] = contents
data['productColor'] = color
data['productSize'] = Size
data['saleValue'] = saleValue
data['userClientshow'] = userClientshow

###  转化版本号和内存容量

for i in range(len(data)):
    if 'GB' in data.iloc[i,2]:
        size = data.iloc[i,3]
        value = data.iloc[i,2]
        data.iloc[i,2] = size
        data.iloc[i,3] = value

3.可视化部分

###   3.1对mate10各个颜色销量做可视化

可以看出在四中颜色当中,亮黑色销量要远高于其他颜色的销量,符合mate10商务机的定位。

京东mate10评论分析京东mate10评论分析


###  3.2可以看出各个版本mate10的销量差距不大。

京东mate10评论分析京东mate10评论分析

对评论进行分析

相关文章: