Python

Seleniumを使ってスクレイピング – 商品レビュー編

みなさん、こんにちは。どんぶラッコです。

今日はスクレイピングを使って楽天商品レビュー情報を収集する方法についてみていきましょう。

楽天では商品レビューを収集するのが一苦労です。ましてや競合の商品レビュー情報となるとAPI提供もされていません。

ということで、スクレイピング技術を使って商品レビューをかき集めるプログラムを書いてみました。

スクレイピング自体が禁止されているサイトもあるので注意してください。

楽天市場でも推奨されていませんが、禁止はされていないとの情報を発見したので今回実施しています。

また、サーバに負荷がかからないようsleep()関数などを使ってリクエスト間隔を調整するなどの配慮をしています。

楽天へのスクレイピングの問い合わせみたという記事はこちらです↓↓

今回実装に当たってはこちらの記事をめちゃくちゃ参考にしました

import os
import time
import pandas as pd
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait

# ----------------------------------------------------------------
# 基本設定
# ----------------------------------------------------------------

CURRENT_DIR = os.getcwd()
# 店舗コード_商品ID の形でIDを指定
ID = '000000_00000000'
URL = 'https://review.rakuten.co.jp/item/1/' + ID + '/'

# 繰り返し回数
times = 20

columns = ['score', 'text', 'age', 'sex'] 
df = pd.DataFrame(columns=columns)

# ----------------------------------------------------------------
# Selenium 設定
# ----------------------------------------------------------------

options = webdriver.ChromeOptions()
browser = webdriver.Chrome(options=options)


for i in range(times):
    browser.get(URL + str(i + 1) + '.1/')

    reviews = browser.find_elements_by_css_selector("div.revRvwUserSec")

    for review in reviews:
        age_and_sex = review.find_elements_by_css_selector(
            "span.revUserFaceDtlTxt span")[0].text
        age = None
        sex = ''
        if age_and_sex != '':
            [age, sex] = age_and_sex.split(' ')
            age = int(age[:-1])

        score = review.find_element_by_css_selector(
            "span.revUserRvwerNum.value").text
        text = review.find_element_by_css_selector(
            "dd.revRvwUserEntryCmt.description").text
        se = pd.Series([score, text, age, sex], columns)
        df = df.append(se, columns)

    time.sleep(2)

df.to_csv("output.csv", encoding='utf_8_sig')
browser.quit()

ID店舗ID_商品ID の形でIDを、そしてtimes に取得するページ数を記入してください。

あとはひたすらぶん回すだけです。

今回はスクレイピング用ブラウザに Google Chromeを使っています。


みなさんも試してみてください!

ABOUT ME
どんぶラッコ
ECコンサルタント、システムエンジニアを経て、quintet株式会社CTOに就任。普段はNuxt.jsやLaravelを使用しています。

\面白いと思ったら/

記事のシェア & Twitter のフォロー をお願いします!

@proglearn
一緒によく読まれている記事

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です