スクレイピング禁止のAmazonからレビューを抜き出す【Python】

スクレイピング禁止のAmazonからレビューを抜き出す【Python】 プログラミング

「Amazonはスクレイピング禁止!!」とよく言われていますよね。
みなさん、これを疑問に思いませんか?

なぜ、誰でも見れる公開サイトにおいて、スクレイピング禁止なんて言えるのか?
また、ブラウザでページを見てコピーするのとどう違うのか?

そして、規約を破った場合にどうなるのか?
いろいろと疑問が出てきます。

この記事では、Amazonへのスクレイピングの可否について結論を下します。
そして、その結論に基づき、スクレイピングをします。

あ、結論が出ましたね。
でも、安心してAmazonをスクレイピングするために一読をおススメします。

本記事の内容

  • Amazonがスクレイピング禁止と言われる理由
  • Amazonをスクレイピングしてもいいの?
  • Amazonを堂々とスクレイピングしてレビューを取り出す

まずは、「Amazonはスクレイピング禁止!!」と言われる理由からですね。
これについて解説していきます。

Amazonがスクレイピング禁止と言われる理由

Amazonの利用規約より。

データマイニング、ロボットなどのデータ収集・抽出ツールの使用は、一切含まれません。

これは、お客様にも許諾されていないということです。
つまり、禁止しているということですね。

この文言から、「Amazonはスクレイピング禁止!!」と言われているのでしょう。
利用規約に明確に書かれているため、お客様がスクレイピングをするのは禁止です。

もう一度言いますね。
「お客様は禁止です」

以上より、「Amazonはスクレイピング禁止!!」が真実だと判明しました。
ただし、お客様がその対象です。

Amazonをスクレイピングしてもいいの?

お客様が、Amazonをスクレイピングするのは禁止です。
このことは、利用規約に明示的に記載されています。

でも、お客様でないなら、スクレイピングをしてもいいのでは?
もっと言うと、利用規約に同意していないなら、スクレイピングをしてもいいのでは?

みなさん、このように思いませんか?
私は思います。

利用規約は当事者同士の約束

そもそも、利用規約とはお客様(利用者)とサービス提供者の約束です。
だから、その約束は当事者間でしか効果はありません。

そして、その約束を破った場合のペナルティも当事者同士の話に過ぎません。

本規約およびその他の利用規約に反する使用をした場合、アマゾンが使用許諾した権利は終了します。

Amazonの利用規約には、上記のようにペナルティについて記載しています。
こういうペナルティも込みで、お客様は利用規約に同意しているわけです。

しかし、Amazonと何も約束をしていないロボットには、そんなの関係ありません。
ペナルティを受ける約束をしていません。

もちろん、スクレイピング禁止にも同意していません。
なぜなら、ロボットは利用規約に同意していませんので。

以上より、利用規約に同意していないロボットは、スクレイピングが禁止されていません。
そして、スクレイピングをしても、何らペナルティを受けることはありません。

では、「利用規約に同意するのは、どのタイミング?」と思いますよね。
利用規約に同意するのは、ログインする時です。

よって、ログインしなければ、利用規約に同意したことになりません。
また、ログインした人のみがお客様ということです。

利用規約なんてものは、サービス提供者が勝手に作ったものに過ぎません。
よって、利用規約に同意した者にしか、その内容は適用されません。

法律は誰もが守るべきモノ

しかし、ここで注意が必要です。
著作権、商標などの法律で規定されている権利を侵すことはアウトです。

法律は、同意の有無関係なくすべての国民に適用されます。
例えそれがロボットだとしても、ロボットの開発者が責任を問われます。

利用規約に同意していないから、利用規約に記載されていることを守る必要はないとは考えてはいけません。
もちろん、サービス提供者が独自に設けた規約に関しては、同意していないなら守る必要はありません。
しかし、法律は同意の有無関係なく、守らないと法律違反となります。

このあたりを判断するためには、既存の法律の理解が必要となるでしょうね。
なお、今回のケースで言えば、スクレイピング禁止はAmazonが勝手に言っていることです。
法律には何も記載されていません。

ただ、スクレイピングが完全にOKか?というとまた別の議論が出てきます。
サーバーへの負荷が問題なるレベルなら、次のような法律違反になりかねません。

  • 刑法233条 偽計業務妨害罪
  • 刑法234条 電子計算機損壊等業務妨害罪

Amazonを堂々とスクレイピングしてレビューを取り出す

ここまでの結論を簡潔にまとめます。

ログインしていなければ、AmazonへのスクレイピングはOK

ここまで読んだ方は、もう安心できますよね。
安心して、Amazonをスクレイピングしましょう。
ただし、サーバーへの負荷は注意してください。

レビューを根こそぎ取得するコードです。

import bs4         
import requests    
import textwrap    
import time

# 全ページ分をリストにする
def get_all_reviews(url):
    rvw_list = []
    i = 1
    while True:
        print(i,'searching')
        i += 1
        res = requests.get(url)
        amazon_soup = bs4.BeautifulSoup(res.text, features='lxml')
        rvws = amazon_soup.select('.review-text')
        for rvw in rvws:
            rvw_list.append(rvw)
            
        # 次へボタン
        next_page = amazon_soup.select('li.a-last a')   

        if next_page != []:    
            next_url = 'https://www.amazon.co.jp/' + next_page[0].attrs['href']    
            url = next_url
            # 最低でも1秒は間隔をあける
            time.sleep(1)       
        else:
            break

    return rvw_list

if __name__ == '__main__':
    
    # Amzon商品ページ
    url = 'https://www.amazon.co.jp/%E6%89%8B%E6%8C%87%E6%B6%88%E6%AF%92%E5%89%A4%E3%80%91%E3%83%8F%E3%83%B3%E3%83%89%E3%82%B9%E3%82%AD%E3%83%83%E3%82%B7%E3%83%A5EX-%E3%81%A4%E3%81%91%E3%81%8B%E3%81%88%E7%94%A8-800ml-%E8%8A%B1%E7%8E%8B%E3%83%97%E3%83%AD%E3%83%95%E3%82%A7%E3%83%83%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%AB%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%8C%87%E5%AE%9A%E5%8C%BB%E8%96%AC%E9%83%A8%E5%A4%96%E5%93%81/dp/B005RUI15O/'
   
    # URLをレビューページのものに書き換える
    new_url = url.replace('dp', 'product-reviews')
    # レビューの取得
    rvw_list = get_all_reviews(new_url)    

    # 全データを表示
    for i in range(len(rvw_list)):
        rvw_text = textwrap.fill(rvw_list[i].text, 80)
        print('\nNo.{} : '.format(i+1))
        print(rvw_text)

【2020年7月14日追記】
現在このコードは動きません。
Amazonがスクレイピング対策をしてきました。
次の記事でその対策の攻略方法を解説しています。

 実行すると以下のような結果が表示されます。

No5 :
品不足、価格高騰の中、この量でこのお値段はとてもありがたいです。使った後の肌もツッパリやかさつきもないので安心です。オートディスペンサーで使用しています。また
発売されたら購入したい商品です。

No6 :
インフルエンザ、胃腸炎の時期ですが、通年使用しています。家では玄関やトイレに置いてます。おかげで、風邪やインフルエンザに家族共かかった事がありません。アルコー
ルティッシュで手先やテーブル、買い物商品を拭いていますので、併用効果でしょう。

No7 :
使い心地は抜群です手が清潔になったーーーって感じがします

No8 :
とても手になじむ感じです素早い対応でした

No9 :
手指消毒剤は案外高額なものが多い。私は飲食店を経営しており、そのトイレに自動噴霧装置を取り付けてこれを常備してあるが、石鹸に比べて減りが少ない。そういう理由で
、あまり多すぎない容量のものとしてこれを選んだ。今のところ問題は無く、我が店にはちょうどよい買い換え頻度になっている。さらっとしていて乾きも悪くなく、べたつき感
も残らないので良い。

ちなみに、このサンプルコードはネットで検索したものを改変しています。
改変時間は、10分ほど。

PythonでのWebスクレイピングは、簡単すぎてヤバイです。
それに比べて、PHPだとAmazonをスクレイピングするのは一苦労です。

以上より、簡単にAmazonからレビューを取得することができます。
サーバー負荷さえ気をつければ、未ログインの状態でがんがんとスクレイピングをやってもOKです。

タイトルとURLをコピーしました