いつもLocal Engineをご覧頂き誠にありがとうございます。トライハッチ開発チームです。

ローカルSEO(MEO)の順位計測ツールにはAPIを使用したものとそうでないものがあります。

以前公開した記事「Google My Business APIとは何か」にて、弊社の提供するMEOチェキがGoogle My Business APIを使用することで正確な順位取得を可能にしている旨をご説明させていただきました。では、APIを使用していないツールではどのように順位取得を行っているのでしょうか。

今回はAPIを使用せずに順位を取得する「スクレイピング」という手法について専門知識のない方にも分かるようご説明させていただきます。

スクレイピングとは何か

「システムにWebサイトを見てきてもらう」と考えると理解し易いかと思います。

「ブラウザの立ち上げ=>キーワードの入力=>検索=>クリック=>情報を見る=>メモやExcelに記入する」など人間が行う動作をシステムで自動化する事により、圧倒的効率でインターネット上の情報を取得する手法を「スクレイピング」と呼びます。

例えばこのLocal Enginに掲載された記事のタイトルを取得し一覧で表示したいと考えた際、人間の力で情報を収集するためには

  1. https://meo.tryhatch.co.jp/へアクセスする
  2. 各記事の位置を把握する
  3. カーソルを合わせてタイトルをコピーする
  4. 任意の場所(メモ帳やExel等)にペーストする
  5. 2~4を記事の数だけ繰り返す

といった動作を行わなければなりません。(当サイトは内容のコピーが出来ない仕様ですが、できるものと仮定しています)

とても工数のかかる作業となるうえ、対象となる情報が膨大であれば不可能な作業です。

そこでこれらの動作を全てシステムに代行させ、効率化だけでなく大量の情報取得を実現可能にすることがスクレイピングの目的です。

実際に何をしているのか

「システムに代行させる」と一言で言ってもイメージが湧きにくいかと思いますが、具体的にシステムに対しどのような指示を出しているのかというと

  1. あらかじめ取得したい情報が掲載されているWebサイトのURLを指定する。
  2. Webサイトの構造上どの位置に知りたい情報が載っているか指定する。※補足
  3. 指定した情報を取得する。(コピーだけでなくスクリーンショットなども可能)
  4. 情報を保存する。

といった内容になっています。

※補足 Webサイトの構造上どの位置に知りたい情報が載っているか

ほとんどのWebサイトは情報を整理して掲示するため、画面上にいくつものボックスを用意して画像や文章を格納しています。

Local engineであればわかりやすい構造をしています。

このような記事一覧ページも構造を解析すると

このように名前のついたボックスの中にタイトルや、さらに小さいボックスが入っています。

そのため開発者はシステムに対して「全ての記事Boxにあるタイトル部分の内容を取得する」と指示を出すことで記事タイトル一覧を取得できます。(他の方法で指定することも可能ですが、最もシンプルなのがこちらです)

情報を取得・保存した後は、自身のツール内でわかりやすく表示させればスクレイピングを利用したアプリケーションの完成です。

スクレイピングのリスク

スクレイピングは非常に汎用性が高く、URLさえ分かればあらゆるWebサイトの情報収集に応用できます。

しかし高い汎用性と効率を持つ反面、いくつかのリスクを孕んだ手法となっています。ここでは2つのリスクを紹介します

スクレイピング先Webサイトの構造が変わった時に情報が取得できなくなる。

上記の※補足でもご説明した通り、Webサイトはボックス単位で情報が掲載されておりそれぞれのボックスに名前を付けることが一般的です。

ではWebサイト制作者がこのボックスの名前を「記事ボックス」から「ブログボックス」に変更した時、システムはあくまで「記事ボックス」を探しに行ってしまうため「ブログボックス」に格納された記事タイトルを見つけることができません。

その際はエラーとなり、システムは空の情報を持ち帰ってきます。

スクレイピング先Webサイトの改修内容を予め察知することは不可能なため、アップデートなどが行われると情報の取得ができなくなる可能性があります。

Webサイト側にブロックされてしまう。

動作をシステムに任せることでおよそ人の力では不可能な量の情報を高速で取得することができますが、短時間の間に何度もアクセスする挙動をプログラムした場合はWebサイト側のサーバーに負担をかけてしまう可能性があります。

これを防ぐためにWebサイト側で短時間での大量アクセスをブロックする事があり、そうなった場合は一定期間かあるいはブロック解除を申請しない限り情報を取得する事ができなくなります。

このようにスクレイピングは有用性の高い手法でありながらある日突然情報が取得できなくなる可能性があり確実性・安定性が低いと言えます。

対してAPIを活用したツールは公式に提供された情報を受け取るため、安定した情報取得が可能となっています。

なぜAPIでなくスクレイピングを使用するのか

主に下記のような事情でAPIの導入が難しい場合に妥協策としてスクレイピングが使用されるケースが多くあります。

APIが存在しない。(必要な情報が提供されていない)

Google My BusinessやTwitterなどは充実したAPIが開放されていますが、最近出来たばかりのYahoo!プレイスはまだAPIが開放されていません。

またAPIが解放されていた場合でも、必要とする情報が提供されていない場合もあります。

このような場合にはスクレイピングによる情報取得が選択肢に挙がります。

API使用許可の審査が通らない。

基本的にAPIを使用するためには提供者に申請を行わなければなりません。

ここで自社の情報やツールを提出して審査を受けますが、各APIごとに審査を通過する条件があり許可が下りないことも多々あります。

※GoogleMyBusiness API の場合、管理している店舗数が少ない場合は審査が通らないことがあります。

コストがかかる

Google My Business APIのように従量課金制を取り入れているものがあり、その場合は一定数以上の情報を取得した際に料金が発生します。

コスト削減のためにAPI導入を見送る企業もあるかと思います。

まとめ

スクレイピングは大変有益な手法でありつつも、リスクを孕んている事がご理解いただけたかと思います。

基本的にはAPIを使用しつつ、APIが解放されていない不足部分をスクレイピングで補う運用が望ましいと言えるでしょう。

弊社の提供するMEOチェキではGoogleMapにおける順位取得はGoogleMyBusiness APIを使用しつつ、まだAPIが開放されていないYahoo!プレイスに関してはスクレイピングを使用した順位取得を行なっています。

MEOチェキについての詳細はこちらhttps://meo.tryhatch.co.jp/lp/にてご確認ください。