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

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

主要分享在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+)

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



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

F12进入开发者工具

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



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

首先我们查看一下XHR,发现里面什么都没有,然后是

JS

(最粗的红框框)

。左下角一个个点击,然后从Preview观测是否是我们需要的信息。



其次我们看一下HEADER这里的信息,

request

和下面

params

参数是我们等会运用到的

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



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

以上就是我们要用到的

url

"http://rate.tmall.com/list_detail_rate.htm"

以及请求方式——

GET(详见代码运用)



设置商品信息:

<blockquote>

"itemId"

  =

"560597539512"



(可以左右滑动)



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

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

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

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

从上面我们发现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

)

(可以左右滑动)



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

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



letterCloud(word_data1, word =

"iphone"

, wordSize =

2

,color =

"random-dark"

,backgroundColor =

"snow"

)

(可以左右滑动)

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

 结论

如上面所观测到的回复多的一些字比如,

正品

,

,

速度

,

,

不错

,我们可以猜测到客户可能大多数觉得是正品,物流非常快速,或者手机性能很快,通过评论来看总体都是觉得该店铺的iphone X比较好。



待改进

技术方面

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



结论方面

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



选择平台

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

作者简介

杨冰羽

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



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





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