◆当ページにはプロモーションが含まれています

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を使っています。


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

エンジニアにおすすめ転職サイト

マイナビIT AGENT
迷ったらまずはココ。求人数が多いため希望や条件にマッチする求人が見つかる!

レバテックキャリア
担当者のレベルが高い。エンジニア特化で15年の実績がある実績で初回提案での内定率驚異の90%!

JOIN
副業やフリーランスとして高額報酬案件を見つけるならJOIN。未経験者でも案件獲得実績豊富が強み!

\面白いと思ったら/

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

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

COMMENT

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