他のサイト・サービスから情報を取得いろいろ(API/スクレイピング)

記事
IT・テクノロジー
他のサイトやサービスから情報を取得してホームページに掲載したい、という時に登場するのかAPIやスクレイピングと呼ばれる手法です。
あまり馴染みのない手法だと思いますが、よく使われるケースはgoogleMap APIを利用したケースでしょうか。

一般的にgoogleMapの埋め込みはiframeのコードを貼り付けるだけのシンプルなものですが、オリジナルのピンを立てたりコメントを表示させたり、ピンからリンクを張ったりなどする場合はgoogleAPIを使う必要がでてきます。

あとは図書館システムのようなデータ閲覧のようなシステムから引用してリストを表示させたいなど、データベース的な利用です。
実はWordpressにも「REST API」という機能が備わっていて、新着一覧やカテゴリ一覧、投稿ページなど様々な情報を別サイトで参照することが可能です。

今回はこのような他のサイト・サービスを利用するAPI/スクレイピングについてお話します。

「API」はサービス元が提供している機能

まずAPIについてです。
APIは「Application Programming Interface」の略で、サービス元があらかじめ提供してくれている機能を利用させていただく手法です。

一般的には「こういう情報が欲しい」とリクエストするとjson形式というデータを渡してくれます。
そのデータを処理するプログラムを書いてホームページに表示させます。

例えばWordpressのサイトならば以下のようなurlで投稿一覧情報を取得できます。
-------
ホームページアドレス/wp-json/wp/v2/posts
-------
文字コードに変換されて読みにくいデータになっていると思いますが、この中には
・投稿日
・タイトル
・記事URL
などが含まれているので、このデータを利用することで他のホームページに新着記事一覧を表示させることができます。

googleMapなどのサービスについてはデータではなく、jqueryを読み込むなどと同じCDNのようにプログラムが提供されます。
仕様に沿ってプログラムを書くことでホームページに実装します。

APIまとめ
まとめるとAPIとはサービス元が機能を提供していて、それを利用させていただいてホームページに表示させる仕組みになります。
あとサービスによって有償の場合があり、利用するにあたってユーザー登録とキーが必要になる場合があります。

ちなみにgoogleMap APIは従量課金になるためユーザー登録とクレジットカード情報の入力が必要になります。


「スクレイピング」はホームページの表示を抜き出す方法

次にスクレイピングについてですが、実はあまりこの手法はおすすめできません。
その理由を説明します。

まずホームページとはアクセスがあるとhtmlの書式でブラウザに送られます。
スクレイピングとはそのhtmlをまるっと取得して必要な情報を仕分ける方法です。

例えばhtmlが
---------
<h1>記事タイトル</h1>
<p>テキストテキスト</p>
---------
となっていて「タイトル」と「記事内容」が明確に分かる場合、h1とpの中身を仕分けて取得すれば元ページの情報を利用することができます。

「このタグはこういう情報」とhtmlから決め打ちで情報を抜くというある意味単純な手法なのですが、単純ゆえに状況によって利用できなくなるおそれがあります。


html構文が変わると抜き出せない
まず第一に、参照元のホームページがリニューアルした場合です。
リニューアルするとうことは大抵html構文が変わるので、それに対応できず情報が取得できなくなります。

同じ運営元のサイトならばリニューアルに合わせてプログラムを変更すれば良いのですが、第三者のサイトならば当然リニューアルの告知などいただけません。

jsでレンダリングされたサイトでは(基本的に)使用できない
最近ホームページではreactやvueなどのjsでhtmlを作って表示させているサイトも増えてきました。
スクレイピングでは最初に送られてきたhtmlコードしか読めないので、その後にjsで差し込まれた情報を取得することはできません。

訴訟リスクがある
そして一番問題なのが訴訟問題に発展する可能性があるということ。
まず前提として私は法的知識がないので、ここからは参考程度に参照ください。

基本的に公開されているホームページは情報を頒布する目的で置かれているので、閲覧自体は自由です。
但しサイト内に禁止事項が明記されている場合罰せられる可能性があります。
例えば利益目的の二次使用とかですかね。

あとは正当なルート外でのアクセスによる不正アクセスやサーバーに負荷かけることで威力業務妨害に問われるケースです。
事例として「岡崎市立中央図書館事件」というものがあるので、気になる方は調べてみてください。

まとめ

APIとスクレイピングの違い、主にスクレイピングがグレーな手法という理由についての説明でした。

以前小規模なサービス内で同社が管理しているサイトなので問題ないか、ということでスクレイピングを施策したことがあったのですが、公開してから5年後にプチリニューアルされて情報が取得できなくなる、といったケースがありました。
その時もグレーな手法だという説明はした上で他に実現方法ないのでというオーダーでしたが、やはりスクレイピングはやめておいたほうが良いという経験になりました。

皆様もスクレイピングの採用は気を付けてください。

サービス数40万件のスキルマーケット、あなたにぴったりのサービスを探す ココナラコンテンツマーケット ノウハウ記事・テンプレート・デザイン素材はこちら