「インスタの分析を行いたい」
「インスタの投稿を自動で取得したい」
このような場合には、この記事の内容が参考となります。
この記事では、インスタの投稿を自動で定期的に保存する方法を説明しています。
本記事の内容
- インスタの投稿を一括取得する方法
- 投稿を一括取得する場合の問題点
- 問題点を解決する方法
- インスタの投稿を自動で定期的に保存する方法
それでは、上記に沿って解説していきます。
インスタの投稿を一括取得する方法
インスタの投稿を一括取得する方法は、次の記事で解説しています。
InstaloaderというPythonライブラリ・ツールを利用します。
しかし、Instaloaderを非ログインで使い続けると必ずエラーが出ます。
そのときの対応方法は、次の記事でまとめています。
上記で挙げた記事の内容に従えば、インスタの投稿を一括取得することが可能です。
まずは、投稿を一括取得するところまで実施してみてください。
以上、インスタの投稿を一括取得する方法を説明しました。
次は、投稿を一括取得する場合の問題点
投稿を一括取得する場合の問題点
実例をもとに説明を行います。
新庄監督のインスタ投稿を対象にしましょう。
新庄監督のインスタ投稿を一括で保存するには、次のコマンドを利用します。
instaloader --login=your_username shinjo.freedom
このコマンドは、すべての投稿にアクセスして動画や画像を取得します。
そのため、初回時はこのコマンドで何も問題はありません。
ただ、このコマンドは非常に無駄が多いのです。
このコマンドは毎回すべての投稿にアクセスします。
そして、未取得の投稿であれば新規保存します。
実際のログでこの動きを確認しましょう。
$ instaloader --login=your_username shinjo.freedom Loaded session from /home/username/.config/instaloader/session-your_username. Logged in as your_username. [1/1] Downloading profile shinjo.freedom shinjo.freedom/2021-12-12_17-42-59_UTC_profile_pic.jpg already exists Retrieving posts from profile shinjo.freedom. [ 1/337] shinjo.freedom/2022-03-21_12-56-26_UTC.jpg [札幌パルコ B1F・特設会場 1F 正面ウィンドウ・衣装…] json [ 2/337] shinjo.freedom/2022-03-21_12-55-17_UTC.jpg [新しいLINEスタンプが出来たらしい😅🙇♂️✋‼️] json [ 3/337] shinjo.freedom/2022-03-20_14-53-54_UTC.jpg exists [今日でオープン戦が終わり いよいよ開幕に向けてキャンプから…] unchanged json [ 4/337] shinjo.freedom/2022-03-20_09-47-23_UTC.jpg exists [林ヘッドコーチの サングラス姿に 全国のヘッドコーチ ファ…] unchanged json 〜
この処理は、「ctrl + c」で強制的に終了させました。
放置すれば、337件の全投稿にアクセスしたはずです。
実は、数日前に335件の投稿をすべて保存していました。
その際は、同じコマンドを利用しています。
そのため、すでに335件は取得済です。
次のログの「exists」や「unchanged」に注目してください。
[ 3/337] shinjo.freedom/2022-03-20_14-53-54_UTC.jpg exists [今日でオープン戦が終わり いよいよ開幕に向けてキャンプから…] unchanged json [ 4/337] shinjo.freedom/2022-03-20_09-47-23_UTC.jpg exists [林ヘッドコーチの サングラス姿に 全国のヘッドコーチ ファ…] unchanged json
不要なアクセスですよね。
これが、あと300回以上生じるのはさすがに無駄と言えます。
Instagramから変な制限を受けるのは、できる限りで避けたいです。
そのためには、できるだけ無駄なアクセスは減らす方がよいでしょう。
以上、投稿を一括取得する場合の問題点を説明しました。
次は、問題点を解決する方法を説明します。
問題点を解決する方法
投稿を一括取得する場合の問題点を解決しましょう。
そうしないと、インスタからアクセス制限を受けるかもしれません。
その解決策として、次のコマンドを利用します。
instaloader --login=your_username --fast-update shinjo.freedom
「–fast-update」が、オプションとして追加されています。
335件の状態(2件分は削除)にして、上記コマンドを実行します。
$ instaloader --login=your_username --fast-update shinjo.freedom Loaded session from /home/username/.config/instaloader/session-your_username. Logged in as your_username. [1/1] Downloading profile shinjo.freedom shinjo.freedom/2021-12-12_17-42-59_UTC_profile_pic.jpg already exists Retrieving posts from profile shinjo.freedom. [ 1/337] shinjo.freedom/2022-03-21_12-56-26_UTC.jpg [札幌パルコ B1F・特設会場 1F 正面ウィンドウ・衣装…] json [ 2/337] shinjo.freedom/2022-03-21_12-55-17_UTC.jpg [新しいLINEスタンプが出来たらしい😅🙇♂️✋‼️] json [ 3/337] shinjo.freedom/2022-03-20_14-53-54_UTC.jpg exists [今日でオープン戦が終わり いよいよ開幕に向けてキャンプから…] unchanged json Saved session to /home/username/.config/instaloader/session-your_username.
3件目の投稿を取得した時点で、処理が自動的に終了しました。
公式(英語)にある説明通りです。
--fast-updateが与えられると、Instaloaderは既にダウンロードされた最初の画像に到着した時点で停止します。
初回時とか2回目以降とか考えるのは、少し面倒です。
それであれば、常時「–fast-update」を付けるのもアリかもしれません。
以上、問題点を解決する方法を説明しました。
次は、インスタの投稿を自動で定期的に保存する方法を説明します。
インスタの投稿を自動で定期的に保存する方法
ここでは、Linux(Ubuntu)をベースに説明を行います。
ここまでの内容を理解していれば簡単と言えます。
シェルスクリプトを書くだけです。
まず、instaloaderのパスを特定します。
$ which instaloader /home/username/venv/bin/instaloader
Pyhon仮想環境を利用していても、問題ありません。
Pyhon仮想環境については、次の記事で解説しています。
次に、注意するのは実行する場所ですね。
instaloaderを実行するディレクトリにまで移動する必要があります。
それらを考慮すると、次のようなシェルスクリプトになります。
instaloader.sh
cd /home/username/data /home/username/venv/bin/instaloader --login=your_username --fast-update shinjo.freedom
あとは、このシェルスクリプトをcronに設定すれば出来上がりです。
毎日6時に起動するようにします。
0 6 * * * /home/username/script/instaloader.sh > /home/username/log/instaloader.log 2>&1
cronについては、次の記事で解説しています。
これらの設定により、毎日インスタの投稿を自動で取得できます。
以上、インスタの投稿を自動で定期的に保存する方法を説明しました。