微信号:datakong

介绍:以分析的视角为切入点,蕴含以互联网、移动互联、IT等科技领域为主的一体化综合型信息服务平台.商务合作:qq:2677585642

iPhoneX 到底值不值得买,数据分析告诉你

2018-01-30 15:25 杨冰羽

我是一个文科生,之前没学过什么编程,所以不会讲什么太偏网页基础知识的.

主要分享在R爬虫时httr包和jsonlite包的运用。

如写的有什么瑕疵地方请多多指教,希望在这里也能找到我们用R做爬虫的小伙伴。

目的

在手机品牌里面,苹果一直深受广大消费者的喜爱,最新款iphoneX发布到现在已经历时4个多月了。本次想通过R语言的爬虫以及词频分析技术,获取iphoneX在天猫销售的评论,研究客户们眼里的这次iPhoneX究竟是好还是坏。


产品

北京时间2017年9月13日凌晨1点,苹果2017秋季新品发布会在Apple Park举行,会上苹果官方正式发布了全新的iPhone产品-iPhone X(英语读音为iPhone ten)。iPhone X也作为苹果十周年的特别的版本出现。之所以命名为“X”是因为2017年恰逢苹果十周年,“X”在罗马数字中就代表了数字10。


齐刘海作为本次的特殊的一个外观特征改变,性能配置上面也是全面屏,前后玻璃,并加上无线技术等黑科技。


方法

步骤一、爬虫获取所需评论资料

本次运用的是以下四个包:

library(httr)

library(dplyr)

library(jsonlite)

library(stringr)


首先打开一个天猫商品的页面,这次我选择的是Iphone X。

(由于这家店销量并不算高,后来选取了苏宁店铺下的iphoneX,从原来的的1,600评论瞬间涨到20,000+)


然后往下翻看到累计评论:

F12进入开发者工具

(PS:先点击累计评价再F12,然后F5刷新)


首先我们查看一下XHR,发现里面什么都没有,然后是JS(最粗的红框框)。左下角一个个点击,然后从Preview观测是否是我们需要的信息。


其次我们看一下HEADER这里的信息,request和下面params参数是我们等会运用到的


以上就是我们要用到的url"https://rate.tmall.com/list_detail_rate.htm"以及请求方式——GET(详见代码运用)


设置商品信息:

<blockquote>"itemId"   = "560597539512"

(可以左右滑动)


我们首先可以观察一下web %>% content(as = "text", encoding = "GBK")得出的结果

他并不是一个完美的json格式:JSON格式是这样的

从上面我们发现rateDetail\":',并不属于我们要的JSON格式,使用repalace我们替换为空白值,使其成为一个完整的JSON格式

    List <- web %>% content(as = "text", encoding = "GBK") %>% 
     str_replace('"rateDetail":','') %>% fromJSON()
   # 获取评论页数
   List$paginator
   # 获取内容
   details <- List$rateList
   result <- data.frame(
     "客户"  <- details$displayUserNick,
     "规格"  <- details$auctionSku,
     "评论"   <- details$rateContent,
     "日期"  <- details$rateDate
   )
   # 合并为数据框
   info <- rbind(info, result)
   # 这里我设置的休息时长
   Sys.sleep(runif(1, 0, 1.5))
   print(sprintf("正在抓取第[%s]页数数据", i))
 }
 print("1000页数数据全部抓取完毕!!!")
 return(info)
}
# 评论汇总
comment <- download_comment(<b><font color="#ff0000">itemId   = "560597539512",
                                                    spuId     = "893336129",
                                                    sellerId  = "2616970884"</font></b>)

(可以左右滑动)


这样我们以后只要知道以上3个红色商品、店铺参数就能随心所欲探索一些其他的产品。

setwd("D://")
# 最后别忘了把结果数据为文件
write.csv(comment, file = "iphonex.csv")

(可以左右滑动)


步骤二、词频分析


# 词云分析
library(NLP)
library(tm)
library(tmcn)
library(rJava)
library(Rwordseg)
# 建立一个文件夹ihpone,把刚才评论的文件留下评论那一列保存为新文件放入该文件夹
#1.生成语料库
TEXT <- Corpus(DirSource ("D://iphone"),
                readerControl = list(language = "UTF-8"))
# 2.分词处理
# 去空格
TEXT_deal <- tm_map(TEXT, stripWhitespace)
# returnType 返回值类型,默认是数据,可以选择为 tm 包语料库类型
TEXT_deal <- tm_map(TEXT_deal, content_transformer(segmentCN),
                   returnType = "tm")
# 去除停用词
TEXT_deal <- tm_map(TEXT_deal, removeWords, stopwordsCN())
TEXT_deal <- tm_map(TEXT_deal, content_transformer( function(x){
iconv(x, from = "UTF8", to ="GB2312", sub ="byte")}))
# 3.词频统计
control = list(wordLengths = c(2,6), stopwords = stopwordsCN())
# 转成向量矩阵
mt <- TermDocumentMatrix(TEXT_deal, control = control)
mt$dimnames
dmt <- as.matrix(mt)
#fix(dmt)
#4.绘制词云
#安装并调用包
#install.packages("yaml")
#install.packages("wordcloud2")
library("wordcloud")
library("yaml")
library("wordcloud2")
word <- sort(rowSums(dmt), decreasing = TRUE)
word_data <- data.frame(word = names(word), freq = word)#筛选词频大于 10 的
word_data1 5,]
# 以下含默认的参数
wordcloud2(word_data1, size = 1, minSize = 0, gridSize = 0,
          fontFamily = 'Segoe UI', fontWeight = 'bold',
          color = 'random-dark', backgroundColor = "white",
          minRotation = -pi/4, maxRotation = pi/4, shuffle = TRUE,
          rotateRatio = 0.4, shape = 'sloggi', ellipticity = 0.65,
          widgetsize = NULL, figPath = NULL, hoverFunction = NULL)

(可以左右滑动)


 Ps:我们可以设置图片,展示为我们需要的样式。是通过设置figPath参数。


letterCloud(word_data1, word = "iphone", wordSize = 2,color = 'random-dark',backgroundColor = "snow")
(可以左右滑动)

 结论

如上面所观测到的回复多的一些字比如,正品,,速度,,不错,我们可以猜测到客户可能大多数觉得是正品,物流非常快速,或者手机性能很快,通过评论来看总体都是觉得该店铺的iphone X比较好。


待改进

技术方面

本次爬虫速度上面是可以提高的,毕竟1000页,还设置了休眠时间,具体时间没看过是边打游戏边跑程序,粗略算一下1页一秒左右共计耗时15-18分钟吧。也有参考过一些案例,在爬虫方方面好像有向量化数据,多进程技术可以提高速度,下次待改进。


结论方面

词频统计方面只是研究关键词,忽略了具体语境下该词的意思,并且可以通过消极和积极词词频累计来探索消费者对于iphone的评价。


选择平台

除了选取天猫店铺还可以增加一个京东苹果自营店抓取分析


作者简介

杨冰羽

电子商务数据专员,R语言爱好者




欢迎加入数据君亲自打造有情怀、高效学习数据分析的


点击了解→_→:和一群小伙伴一起学习数据分析,彼此相爱...


 
数据挖掘与数据分析 更多文章 如果把数据当成一只青蛙,看看大咖如何说? 39个大数据可视化工具,总有一款适合你 和一群小伙伴一起学习数据分析,彼此相爱... 【好文】教你如何用Python预测股票价格 超强PPT合集包,5.7G 让你报告爽爽爽....
猜您喜欢 如何优雅的编写JavaScript代码 基本线程同步(一) 同步方法 程序员眼中的古典名画 据说这是运维工程师的工作场景之一 Folly源码分析系列(一) — ThreadLocalPtr