楽天市場の商品レビュー取得について問い合わせた内容と解答
- 2020.06.04
- 2. 実行
- API, ECシステム, Laravel, PHP, スクリプト備忘録, スクレイピング, ひとりごと, 仕様, 商品ページ, 商品レビュー自動取得, 失敗例, 情報収集, 楽天市場, 自作システム

楽天市場の商品レビュー取得について問合わせた内容と解答
楽天商品レビューの取得、簡単に考えていたのですが手こずってます。
その流れの中で最善策を探そうと楽天市場へ問い合わせを掛けました。
【質問事項】
- 商品レビューを取得するAPIはありますか?
- レビューをスクレイピングで取得する事は楽天市場の規約上問題ありますか?
- 商品レビューを社内DBに蓄積するための良い方法があれば教えてください。
【回答内容】
- RMS WEB SERVICEのAPIについては、「商品レビューを取得するAPI」に該当する機能はございません。
- スクレイピングによる情報取得は、弊社では推奨しておりません。動作保証もできかねます点ご留意ください。
- RMSにログイン頂くとレビューをCSVで保存する事が出来ますのでご活用ください。
RMSログイン後の処理。2重認証を乗り越えないといけないので自動化には厳しいものがあります。
ただ、スクレイピングは推奨しないけど禁止事項ではないとの回答は前向きな内容でした。
と言う事で、レビュー取得はスクレイピング前提で進めたいと思います。
商品レビューのURL構成
以前の記事で書いた通り商品レビューのURLはこんな形になっています。
https://review.rakuten.co.jp/item/1/{店舗コード}_{楽天が管理する商品ID(例:10034468)}/
問題は【楽天が管理する商品ID】をどうやって取得するか。
このIDは店舗商品ページ内でも複数回登場しています。
と言う事で、システムで出品URLを作成してスクレイピングを試みました。
結果….取れない…。「アクセス集中により~~~」というページが出力され商品ページが出てきません。
ヘッドレスブラウザではなくPCのchromeさんからアクセスすると問題なく表示されます。
どうやら商品ページからJSで呼び出している納期や税込み価格のスクリプトが関係している様子。
だから取得できる時もあるけど、プログラムとしては動作安定しないのでNGです。
楽天が管理する商品IDを取得できる場所を探す
「何かのAPIに値として付いてきていないか」と思い調べましたがありませんでした。
う~ん。
色々と調べた結果、何とか取得できる場所を見つけて構築!
レビュー系ページだと「アクセス集中により~~」ページは出ない
前述の通り、商品ページ内で動くJSが問題のようなので小細工の無いレビューページではアクセス集中メッセージ出てこなくていい感じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//Goutte 実行 $client = new Client(); $crawler = $client->request('GET',$URL); #存在チェック用count $count = $crawler->filter('div.revRvwUserSec.hreview')->count(); if($count > 0){ $crawler->filter('div.revRvwUserSec.hreview') ->each(function($element)use($count){ #投稿内容を取得 $review = $element->filter('div.revRvwUserMain')->html(); var_dump($review); } } |
Goutteを使えばこれで商品レビューを取り出せます。
まとめ
レビュー取得の自動化、何とか目途が立ちました。
何よりもスクレイピングは禁止事項ではないという体裁を頂いたのが一番の収穫でした。
ただ、課題も1点。
スクレイピングの場合「倉庫入れ」や「在庫ゼロ」の【楽天が管理する商品ID】の取得はやはり難しい。
その為、商品検索APIで取得したレビューの総数を取得するには至りませんでした。
まぁそれでも再出品すれば溜まってるレビューは取得できるし、用途は『賑わい演出』なのでまぁいいか。
-
前の記事
店舗管理自動化の懸念事項『在庫数更新』突破方法について 2020.06.02
-
次の記事
スクレイピングでエラー発生:cURL error 1: Received HTTP/0.9 when not allowed (see https://curl.haxx.se/libcurl/c/libcurl-errors.html) 2020.06.04
コメントを残す