2019/11/07(木)16:57
▼楽天市場ランキング上位のメンズ・ボトムスの商品レビューの分析をしました:「R言語」によるスクレイピング
楽天市場ランキング上位のメンズ・ボトムス、MONO-MARTの「チノパンツ」の商品レビューの分析をしました。レビュー数は、4600件を超えていますが、今回はスクレイピング可能な1500件のうち375件のレビューデータを取得しました(ページ送りのステップ数を4に設定)。
「はきやすさ」「はき心地」「値段」が評価されているようです。
S M L XL 選べる2TYPE チノパン シルエット テーパード スキニー スキニーパンツ 上質 カツラギ ボトムス ストレッチ 品質 メンズファッション チノパンツ 夏 メンズ モノマート
価格:1998円(税別、送料別)(2019/9/8時点)楽天で購入バリエーションが豊富です
今回スクレイピングした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 <- 100get_r_reviews <- NULLdf_reviews <- NULLfor(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グラフィックスクックブック ggplot2によるグラフ作成のレシピ集 [ ウィンストン・チャン ]
価格:3672円(税込、送料無料) (2019/9/14時点)
Rではじめるデータサイエンス [ Hadley Wickham ]
価格:4320円(税込、送料無料) (2019/9/14時点)