One of my favorite things is ...

2019.09.08
XML
カテゴリ: データ分析
​​​​​​​​


 「はきやすさ」「はき心地」「値段」が評価されているようです。




スクレイピングした375件で、「購入した回数」が「はじめて」というレビューが177件となっていて、「リピート」の61件よりも多くなっています。


▼レビュー(375件)の性・年代別件数

 40代と50代が、レビュー投稿者の中心になっています。




▼「購入した回数」

 「はじめて」が177件と多くなっています。


▼レビューの日別推移

 レビュー投稿の時期は、春、秋がやや多いようです。



▼レビュー件数の月別推移

 スクレイピングしたレビューには、2013年のものも含まれていました。



▼レビューの見出し:「はじめて」購入した人

 「はきやすさ」「はき心地」「価格」などが評価されています。




▼レビューの見出し:「リピート」購入した人




◆今回の「R言語」でのスクレイピングコード:ファッション商品(ボトムス)用


library(pipeR)
library(textreadr)
library(RCurl) 
library(XML)
library(tidyverse)
library(rvest)
library(lubridate)
library(purrr)
library(ggsci)
library(gridExtra)


url_txt <- "https://review.rakuten.co.jp/item/1/257982_10002304/"
pages_num <- 100
get_r_reviews  <- NULL
df_reviews   <- NULL
for(i in seq(1, pages_num, by = 4)) {
  url <- paste0(url_txt,i,'.','1/')
  page <- read_html(url)
  get_r_reviews <- page %>% 
    html_nodes ('.hreview')  %>%    
    map_df(~list( name = html_nodes(.x, '.reviewer') %>% 
                    html_text(.,trim = FALSE) %>% 
                    {if(length(.) == 0) NA else .}, 
                  title = html_nodes(.x, '.summary') %>% 
                    html_text(.,trim = FALSE) %>% 
                    {if(length(.) == 0) NA else .}, 
                  stars = html_nodes(.x, '.value') %>% 
                    html_text() %>% 
                    {if(length(.) == 0) NA else .}, 
                  date = html_nodes(.x, '.dtreviewed') %>% 
                    html_text() %>% 
                    {if(length(.) == 0) NA else .}, 
                  reviews = html_nodes(.x, '.description') %>% 
                    html_text(.,trim = FALSE) , 
                  helpful = html_nodes(.x, '.revEntryAnsNum') %>%
                    html_text(.,trim = FALSE) %>%
                    {if(length(.) == 0) NA else .} ,
                  age_sex = html_nodes(.x, '.revUserFaceDtlTxt') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "購入者|レビュー投稿.*|.*件","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                  sex = html_nodes(.x, '.revUserFaceDtlTxt') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "購入者|レビュー投稿.*|.*件|.*代|以上","") %>%
                    str_replace_all(., "レビュー投稿.*","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                  age = html_nodes(.x, '.revUserFaceDtlTxt') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "購入者|レビュー投稿|.*件|男性|女性","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") , 
                  posts = html_nodes(.x, '.revUserFaceDtlTxt') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., ".*代.*|購入者|レビュー投稿|件","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                  size = html_nodes(.x,'.revRvwUserDisp') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "利用者サイズ:|商品を使う人.*|購入した回数.*|商品の使いみち:.*","") %>%
                    str_replace_all(., " ","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                  usage1 = html_nodes(.x,'.revRvwUserDisp') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "利用者サイズ:.*|ボトムス.*|商品を使う人.*|購入した回数.*|商品の使いみち:","") %>%
                    str_replace_all(., " ","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                  usage2 = html_nodes(.x,'.revRvwUserDisp') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "利用者サイズ:.*|ボトムス.*|商品の使いみち.*|購入した回数.*|商品を使う人:","") %>%
                    str_replace_all(., " ","") %>%
                    str_replace_all(., " ","") %>%
                    str_trim(., side = "both") ,
                 usage3 = html_nodes(.x,'.revRvwUserDisp') %>% 
                    html_text(.,trim = FALSE) %>% 
                    str_replace_all(., "利用者サイズ:.*|ボトムス.*|商品の使いみち.*|商品を使う人.*|購入した回数:","") %>%
                    str_replace_all(., " ","") %>%
                   str_replace_all(., " ","") %>%
                   str_trim(., side = "both") 
         ))
    df_reviews <- rbind(df_reviews, get_r_reviews)
    print(i)
    Sys.sleep(5)
}
view(df_reviews)
write.csv(df_reviews,"rakuten_reviews.csv")
df_r <- read.csv("rakuten_reviews.csv",header = TRUE, na.strings=c("","NA"))
write.csv(df_r ,"rakuten_reviews.csv")
view(df_r)
​​​ ​​ ​​-------------------------------------------------------------------------

☆関連記事​
▼楽天市場のランキング上位の「zootie:エアパンツ」の商品レビューをテキストマイニングしてみました:「ファッションジャンル商品対応版のRコード」でスクレイピング

▼【再改訂版コード】:「R言語」による楽天市場の商品レビューのスクレイピングコードの再改訂版:グラフ作成コードなどを追加:「素焼きアーモンド」の商品レビューのデータを取得:意外と多い「はじめて」の購入

▼「R言語」による楽天市場の商品レビューのスクレイピングコードの改訂版です:Excelで項目を切り分ける作業が不要になりました

▼楽天市場の
特定の商品のレビューを「R言語」でスクレイピングするコード:一部の項目の空欄・欠損値(missing values)を「NA」に置き換えてデータフレームを作成:継ぎはぎのコードですが・・・


▼JPRiDEの新モデル・完全ワイヤレスイヤホン「JPRiDE TWS-520」のアマゾン・カスタマーレビューのテキストを分析

▼「JPRiDE」ブランドのワイヤレスイヤホン「JPRiDE 708」の楽天市場のレビューのテキストを分析:ReviewMetaでアマゾンのカスタマーレビューの信頼性の高さを推定できるJPRiDEの製品 ​​

▼雑誌など第3者の高評価をアピールしている「JPRiDE(ジェイピー・ライド)」ブランドのワイヤレスイヤホン「JPA2」の楽天市場のレビューのテキスト分析です


▼JVCケンウッドの高評価イヤホン「HA-FX3X」とソニーの「MDR-EX450」のカスタマーレビューを比較

▼3000円クラスの高評価イヤホン「HA-FX3​のカスタマーレビューのテキスト分析を「User Local」の「AIテキストマイニング」で行ってみました:こんな分析ツールがあったとは、驚きです

▼カスタマーレビュー分析で、Microsoft Power BIの「Word Cloud」とスライサーの組み合わせは便利です:3000円クラスで、高評価のイヤホン「HA-FX3X」のカスタマーレビューのテキスト分析

▼アマゾンのカスタマーレビューを購入の判断材料にする場合、「ReviewMeta」(レビューメータ)によるチェックが役立ちます


​▼先日購入したイヤホン「HA-FX3X」のアマゾン・カスタマーレビュー分析:低音の良さ、コスパなどが高評価の理由のようです​:3000円クラスで、高評価のイヤホンです​
 ​​​​​​ ​​


[商品価格に関しましては、リンクが作成された時点と現時点で情報が変更されている場合がございます。]

Rではじめるデータサイエンス [ Hadley Wickham ]
価格:4320円(税込、送料無料)  (2019/9/14時点)




​​





お気に入りの記事を「いいね!」で応援しよう

Last updated  2019.11.07 16:57:32
コメント(0) | コメントを書く


【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! -- / --
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x
X

© Rakuten Group, Inc.
X
Mobilize your Site
スマートフォン版を閲覧 | PC版を閲覧
Share by: