[注意: 最新版未対応です] インスタグラムのデータ収集を自動化できるスクリプト - その1ユーザー投稿リストと統計情報
注意: この記事の情報は少し古いです。2019年4月現在のinstagramのスクレイピングには対応できておりません。対応が完了次第、更新をいたします。
今やインスタグラムはマーケティングに欠かせないツールですよね。近年インフルエンサーマーケティングを起用したプロモーションなども当たり前になってきていますので、今後より一層インスタグラムを活用したビジネスは増えてくると思います。
さて、今回のソースコードは特定のインスタグラムユーザーのアカウントを指定して、画像URL、いいね数、コメント数、ハッシュタグなど情報をごっそり収集してくるプログラムをご紹介します。
今回のプログラムはアカウントを指定してデータを収集するものですが、これをベースに拡張していけば、例えば特定のハッシュタグなどを指定して統計情報をとるとか、ユーザの投稿にいいねをしているユーザーを辿って情報収集するクローラーのようなプログラムも作ることができます。
ターゲットは以下のような方です。
----------
・インスタグラマーなどのインフルエンサーマーケティングの事業を行っていて統計データ収集や効果測定を自動化したいとお考えの方
・特定のアカウントの画像などの情報を収集して、何かメディアなどの記事に自動で組み込みたい、などお考えの方
----------
今回は第一弾として「ユーザー統計情報」を収集します。
どのような情報が取れるかというと。
----------
・特定のアカウント(Instagram ID)と期間(日数)を指定して最新から過去の投稿を遡り、指定した分の投稿リスト(各投稿ごとに画像URL, キャプション、ハッシュタグ、いいね数など)を取得します
・収集した投稿の統計情報を計算します(例えば、いいね数、コメント数、エンゲージ率、よく使うハッシュタグなど)
・ユーザーの公開プロフィール情報
----------
ソースコードの解説と配布の前に、プログラムの概要とサンプルの実行や結果について先に掲載します。
サンプル結果
試しにローラのインスタグラムアカウントを指定して実行してみます。
結果はjson形式で出力されます。フォーマットすると以下のようなデータが収集できているのがわかります。
基本的には上のプロパティ名を見てもらえれば何を意味しているかわかるとは思います。avg_engagement_rateはフォロワー数に対して、どれだけの数のエンゲージ(いいね、もしくはコメント)があったかを割合で示すものです。ローラの場合これだけのフォロワーがいるのに3%近くの方がいいねなどのアクションを起こしていることがわかります。number_of_samplesというのは今回のプログラム実行で収集した投稿数です(何ページ分収集するかなどは設定で変更できます。後述。)
収集した投稿の中でよく使うハッシュタグを集計したのがmost_used_hashtagsというプロパティです。展開すると以下のような感じになります。
個々の投稿の詳細情報はthumbnailsというプロパティに入ります。
likeの数がめちゃくちゃ多いですね。
上のjsonファイルを使えば例えばインフルエンサーマーケティングツールのような以下のようなUIも簡単に作ることができます。(こちらは筆者が作成したサンプルUIです。)
表示されている情報は国情報以外は表示できます。国情報を推定できるプログラムはありますが、今回のプログラムには同梱しません。
※現在は複数枚同時投稿の際のトップ画像以外の情報、及び、動画投稿における動画ファイルのURL取得については今回のプログラムでは対応しておりません。
事前セットアップ
1. プログラムの実装はnodejs(サーバーサイドjavascript)を使います
2. まずはnodejsの環境を構築してください。バージョンはv8以降を推奨。 (mac node インストールなどで検索すると色々方法が出てくると思います)
nodejsがinstallできたらソースコードを配置したプロジェクト配下で以下のコマンドを実行して依存モジュールをインストーるしてください。
npm install
3. configファイルを設定してください(項目の詳細は後述)
module.exports = {
accounts: [
'rolaofficial',
'nozomisasakiofficial'
],
maxPageCount: 10,
recentDaysCount: 60
}
4. 以下のコマンドでプログラムを実行します
npm start
これだけでプログラムを放っておけば情報取集してきてくれます。
指定できるパラメーター
configファイルの設定項目は3つあります。
- accounts: 収集対象のインスタグラムユーザーIDのリスト
- maxPageCount: 各アカウントごとに最大何ページ分収集するか指定
- recentDaysCount: 各アカウントごとに何日前まで遡って収集するか指定
なお、maxPageCountとrecentDaysCountはどちらかの条件を先に満たすまで収集します。
実行時間目安
大量アクセスしないように、1ページ辿るのに5秒から10秒の間でランダムでスリープを入れています。したがって、もし1アカウント10ページ分辿る場合は約50秒から100秒かかります。
一部ソースコードのご説明
インスタグラムの情報をプログラムで収集するにはセキュリティ対策のcsrfトークンなどを付与してリクエストを送信する必要があります。以下のようにプログラム内で一度HTMLを取得してそこからcsrfトークンなどを抽出して次のページのリクエストを発行しています。(2018/5/19現在動作確認すみ。もし動作しなくなっているようでしたらご連絡ください)
まとめ
以上、今回はユーザーの情報を収集するというシンプルなものでした。
インスタグラム上の統計データを収集することができれば、そのデータだけでも高く売れる可能性のある価値があるものになるのではないでしょうか?
さらにメンションを辿る機能を実装して10万件以上のアカウントデータを辿れるような機能も実装可能です。また、言語判定も入れて国をフィルターしたりすることもある程度可能です。それらのコードに関してはまた別の記事で公開させていただくかもしれません。乞うご期待。(Twitter版なども公開するかもしれません。)
以下、有料でソースコードを購入していただいた方にはnote上でコードを記載していますのでご参照ください。もし必要であればzipファイルとしてお渡しいたしますのでご連絡ください。
ここから先は
¥ 4,000
この記事が気に入ったらチップで応援してみませんか?