インターネットが普及をはじめたのは1990年代。そこから、世の中にはさまざまなウェブサイトが作られ、たくさんの情報がインターネット上で公開されるようになりました。
ウェブサイトの数はモリモリ増え、2020年9月現在、この世界にウェブサイトの数は18億ほどもあります。
(インターネットに関する統計情報を公開している「Internet live stats」調べ)
このことから、「インターネット上には膨大な情報(データ)がある」と言えるでしょう。
これらのウェブサイトからデータを収集する「スクレイピング」というものがあります。
その膨大な情報をどうやって効率的に収集していくのか?
スクレイピングの活用法や注意点などをみていきましょう。
目次
スクレイピングとは? もっと詳しく
「スクレイピング」とは、ウェブサイトから情報を取得する行為、また、その技術を指します。
ウェブサイト上にある文字列(価格情報やURLを含む)や画像などのデータを、プログラムを使って一気に収集します。
そもそも、なんのためにスクレイピングするの?
「スクレイピング」の目的はおもに特定の情報を解析して業務に役立てることです。
ウェブサイトから膨大な情報を収集し、その情報をもとに自社の利益になる商売をしたり、業務を効率化したりします。
クローリングとスクレイピングの違いってなに?
「クローリングすれば情報収集できるんじゃないの?」と思われるかもしれません。
たしかにクローリングすることによって、対象サイトの情報を取得することができます。
ただし、「特定の情報を解析して業務に役立てること」が目的の場合は、クローリングで収集した情報には余計なものが多すぎます。
たとえば、価格情報だけが欲しいのに、その他の情報まで全部くっついてきたら、膨大なデータの中から、目的とする価格情報だけを抽出する作業が必要になってしまいます。
それだったら、最初から必要な情報だけを収集できたほうが効率がいいですよね。
そのようなときにスクレイピング技術が活躍します。
スクレイピングの方法は?
方法1:自作のプログラムでスクレイピングツールを作成(マニア向け)
ウェブプログラミングの知識が豊富であれば、Ruby や Python などの言語を使って、自作でスクレイピングツールを作成することも可能ではあります。
スクレイピング対象のサイトからAPIが提供されているのであれば、そのAPIを利用したツールを開発するのが良いでしょう。
「自作のため無料である」というメリットがありますが、相手サイトもスクレイピング対策をしてきますので、自作プログラムを使用するだけではすぐIPブロックされる場合があるので、あまり頼りになりません。
数分に1回程度のアクセス頻度にすればそうそうブロックされないかもしれませんが、データ収集効率が悪すぎる(欲しいデータが集まるまでに日数がかかりすぎる、また、集まったとしてもデータ取得日時が揃っていないと意味がない)というような問題があります。
個人でほんのちょっとデータを取りたい場合はアリかもしれませんが、業務レベルの情報収集に使用したいのであれば、個人作成のスクレイピングツールでは無理があります。
そんなとき便利なのが、企業が提供するサービスを利用する方法です。
方法2:信頼できるプロキシサービスを活用(本命の方法)
業務レベルのスクレイピングをするのであれば、信頼できる企業のサービスを利用するのがオススメです。
IPブロックなどを回避しつつ、効率的なデータ収集が可能となります。
プロキシサービスで世界最大手。イスラエルの「Luminati」
イスラエルのLuminati社は、世界トップレベルのプロキシサービスを提供しています。
「対象のサイトからブロックや接続拒否されることなく、安定した情報収集をする」
そのために、スクレイピングを業務で活用している企業から非常に頼りにされている存在です。
・対象のサイトにスクレイピング対策をされても、さらにその上をいくことができる
(ブロックされにくいサービスを提供しているうえに、3500万以上のIPが用意されているため、IPブロックも怖くない)
・プロキシに関連した数々の特許を所持しているため、競合他社に対して大きな強みがある
(イスラエルのLuminatiは、プロキシに関連したさまざまな特許を米国およびその他の国にて取得しています)
・信頼性と実績がある企業のサービスなので安心できる
(Fortune500掲載企業など、10,000社以上の企業に使用されている実績がある)
あえてデメリットを挙げるとすれば、有料であることでしょうか。しかしそれも、収集したデータを活用し、コスト以上の利益を得るのであれば、デメリットとは呼べないかもしれませんね。
スクレイピングが弾かれる(ブロックされる)場合はどうする?
スクレイピングをしていると、相手のサイトから、
「あっ、このアクセスはスクレイピングだな。よっしゃIPブロックしたろ」
のようにブロックされてしまう場合があります。
原因はいろいろ考えられますが、相手のサイト側としては、
・通常のユーザ(人間による、サイトへの普通の訪問)によるアクセス以外はシャットアウトしたい
・サーバ負荷を抑えたい
・データを収集されたくない
などの理由があると思います。
単純に、1つのサイトに単一IPアドレスから多数のリクエストが検知された場合にIPブロックがされやすいです。
ブロックを回避するには、どんな方法がある?
ブロック回避法1:リクエスト頻度の調整
ウェブサイトに対して高頻度で膨大なデータをリクエストした場合、アクセス先のサーバの負荷が増加します。
その結果、ウェブサイトの運営からは「このIPアドレスからめっちゃリクエスト送ってきてるな… サーバの負荷が大きくなって迷惑だからブロックしよう」と思われてしまい、IPブロックを食らってしまいます。
ブロックの期間が数日間か数週間か、永久かは相手次第ですが、どのみち同じIPアドレスからのデータ収集ができなくなってしまいます。これでは困りますよね。
そこで、人間が手動でサイトを巡回している程度までスクレイピング速度を落とすことで、ブロックされにくくなります。
この方法はお手軽ではありますが、データ収集効率を犠牲にしてしまうのが難点です。
そこで、下記の方法の出番となります。
ブロック回避法2:IPアドレスローテーション
Luminatiのような、多数のIPアドレスを使用できるサービスを利用し、IPアドレスを自動で切り替えながら相手ウェブサイトに対してリクエストを送ります。これにより、相手側から見れば同じユーザではなく多数のユーザがバラバラにリクエストを送ってきているように見えるため、こちらはブロックされる理由がありません。
Luminatiなら3500万以上ものIPアドレスが用意されている
Luminatiには世界に3500万以上ものIPアドレスが用意されていますので、IPアドレスローテーションに困ることはありません。
IPブロックを回避でき、万が一ブロックされたとしても別のIPで効率的にスクレイピングを継続することができます。
Luminatiは情報収集の強い味方となってくれます。うまく活用して、ぜひあなたのビジネスを加速させていってください。