PythonでWeb APIを利用し、データを収集する方法【おすすめのAPIも紹介します】
Pythonでは、Web APIを利用すると、データの自動収集ができるようになります。しかし、Web APIと言われてもよくわからないですよね。今回は、
- PythonでAPIを利用する方法を知りたい。どうやったら呼び出すことができるの?
- Pythonで使えるAPIってどんなものがあるの?
- PythonのAPIを使えるようになるためには、どうすればよいの?
という疑問に答えられるよう、PythonでWeb APIを利用する方法について詳しくまとめていきたいと思います。
目次
Web APIとは
Web APIとは、簡単に言うと、外部サービスの情報窓口です。
- Twitterから自分のツイートをダウンロードしたい!
- Instagramから、有名人の画像を一括ダウンロードしたい!
という場合に、Webブラウザ経由ではなく、HTTPという通信経由で、ツイッター内のデータにアクセスすることができます。
ちなみに、厳密にいうとWebブラウザを経由しているときは、HTTPという通信でデータを取得していますが、ブラウザなしでHTTPの通信をPython上で行うことで利用することができるのです。
Web APIが使えると、何が嬉しいの?
Web APIが使えると、何が嬉しいのかを簡単にまとめます。
- 自作のサービス上で、外部アプリケーションのデータを利用した、混ぜ合わせたアプリ(マッシュアップアプリ)を作れる
- 普通にブラウザでデータを収集すると、手動で「次へ」ボタンをクリックして全記事を確認しなければならないが、APIを利用すると、一瞬で可能
- Pythonで自動化プログラムを組めば、データの自動収集をブラウザではなくプログラムから実行できるので、ブラウザ操作しなくても放置するだけでデータの取得が可能
1に関しては、身近な例でいうと質問箱アプリです。例えば、
といったアプリは、TwitterにAPI連携しているからこそ、ツイッター上で自動投稿ができるわけですね。ほかにも、ツイッターの分析ツールである
等のアプリケーションは、Twitter上のデータを自動取得するために、APIを利用しています。
Web APIを提供しているサービス
Web APIを提供していて、有名なサービスは以下の通りです。
- Twitter REST API
- Instagram Graph API
- Google Search Console API
- Slack APIs
- Chatwork API
- LINE Messaging API
- 【機械学習API】Google Cloud Vision API
- 【機械学習API】Microsoft Cognitive Face API
Twitter REST API
ツイッターが出しているAPIです。このAPIを使うと、こんなことができます。
- 【データの収集】他人のツイートを自動でダウンロード
- 【データの収集】検索キーワードをツイートした人のリストをCSVにエクスポート
- あるキーワードについてつぶやいたツイートを自動でいいね、またはフォローする
ツイッターのAPIを利用してできることについては、こちらの記事をぜひ読んでみてください。
≫関連記事 Python Twitter APIを初心者向けに徹底解説してみた – フォロワー取得からハッシュタグ検索まで-
Instagram Graph API
インスタグラムも同じようにAPIを提供しています。しかし、無料で提供されいているものは個人のデータを取得することは可能ですが、他人のデータを取得することはできません。ですので、もし他人のアカウントのデータを取得したい場合は、法人用の申請を出す必要があります。
Google Search Console API
ブロガーや、SEO担当者だと使う可能性が高いのが、Googleの検索キーワードツールGoogle Search ConsoleのAPIです。自身のGoogle Search Consoleと紐づけたメディアの、こんなデータを取得できます。
- 狙っているキーワードでの検索数
- 狙っているキーワードの検索順位
- 狙っているキーワードのクリック数
などが取得できます。(ちなみにこのデータをGoogle SpreadsheetにAPI連携して毎日自動取得とかできるので、超絶便利です!)
Slack API
チャットツールである、SlackにもAPIがあります。できることとしては
- TwitterのAPIと組み合わせて、あるキーワードがツイートされたときに、Slack上で通知(社名での評判の可視化等)
- 毎日取得したいニュース記事を、Slack上で自動通知
などができます。Web APIを通して、プログラムから情報を送信(POST)し、Slack側で投稿みたいなこともできるので、実はAPIはデータの取得だけできるのではなく、APIを通して、アプリを外部から操作することができるわけです。
Chatwork API
ChatworkもAPIを持っています。が、基本的にはSlackでやっていることはだいたいできるようです。
LINE Messaging API
こちらは、LINEにメッセージを送るBotを作れるAPIです。過去に僕はLINEに画像を送ると、自動でその画像を文字起こししてくれるアプリを作ったことがありますが、これもLINE Messaging APIを利用して作成しております。
Google Cloud Vision API
こちらは、機械学習のAPIです。画像を送ると、その画像が何なのかを特定して文字列で返してくれるAPIになります。こちらも、LINEに画像を送ると、自動でその画像を文字起こししてくれるアプリで利用しました。
≫【関連】 【AIプログラミング】LINEに画像を送ったら自動で文字起こししてくれる機械学習アプリを作ろう
Microsoft Cognitive Face API
こちらは、顔認識の機械学習APIです。このAPIに顔の画像を送ると、だれだかを学習してくれます。以前、女性の画像を送ると似ているAV女優を教えてくれるAI LINE Botを作りましたが、こちらもMicrosoft Cognitive Face APIを利用しています。
≫【関連】スケベAI「スケベ博士」をPythonとGoogle Apps Scriptで作るスケベ・チュートリアルを公開します
PythonでWeb APIを取り扱う方法
PythonでWeb APIを取り扱う方法ですが、以下2点です。
- Web APIの仕様書(APIリファレンス)を読んで実装する
- Web APIのラッパーライブラリを利用して利用する方法
Web APIの仕様書(APIリファレンス)を読んで実装する
基本的にエンジニアは、Web APIを利用する場合Web APIの仕様書を見て実装することが多いかと思います。
APIリファレンスは、初心者が読むとすこし難しいです。それは、
- 基本的なHTTPにおける通信の理解
- GET/POST/PUT/DELETEというアクションの理解
- URLパラメーターの理解
- インターネットの認証の仕組み(Basic認証, OAuth認証)の理解
- JSON, XML等のデータの理解
が必要になってきます。ですので、これらの理解をした人ではないとちょっと難しい反面、後述するAPIラッパーライブラリを利用するよりも自由度の高い実装が可能です(ラッパーライブラリでは対応しきれていない操作などが可能です)
この場合は、PythonのHTTP通信のモジュールである、requestsというライブラリを利用して、基本的にはHTTPの通信を制御します。詳しくは、下記記事のPythonチュートリアルを読んでみてください。
Web APIのラッパーライブラリを利用して利用する方法
もう一つが、Web APIのラッパーライブラリを利用する方法です。ラッパーとは、あるAPIでよく行う操作をまとめたライブラリのことで、これを使うとAPIのリクエストがAPIリファレンスを読むことなく、直観的にデータを操作することができます。
例えば、TwitterのPython用APIラッパーに、Tweepy
があります。Tweepyを利用すると、非常に簡単にツイッターのAPIをPython上で操作することができます。
Tweepyの利用方法については下記記事を参照してください。
≫ 関連 Python Twitter APIを初心者向けに徹底解説してみた – フォロワー取得からハッシュタグ検索まで-
Web APIの学習方法
Pythonを利用した、Web APIの学習方法については、こちらのチュートリアルをご覧ください!