Instagramの情報収集ライブラリInstaloaderのインストール

Instagramの情報収集ライブラリInstaloaderのインストール プログラミング

「Instagramの投稿をスクレイピングしたい」
「インスタの投稿を保存・ダウンロードしたい」
「Pythonでインスタのデータを集めたい」

このような場合には、Instaloaderをオススメします。
この記事では、Instaloaderについて解説しています。

本記事の内容

  • Instaloaderとは?
  • Instaloaderのシステム要件
  • Instaloaderのインストール
  • Instaloaderの動作確認

それでは、上記に沿って解説していきます。

Instaloaderとは?

Instaloaderとは、Instagramからユーザーの投稿を取得するツールです。
無料で使えるオープンソースのPythonライブラリとなります。

ユーザーは、自分・第三者に関わらず指定できます。
そして、取得できる情報は以下のモノがあります。

  • プロフィール
  • ハッシュタグ
  • ユーザーストーリー
  • フィード
  • メディア(写真・動画)

また、投稿毎における次の情報も対象にできます。

  • コメント
  • ジオタグ
  • キャプション

Instaloaderの利用方法には、次の2つが用意されています。

  • コマンドラインツール
  • Python API(モジュール)

一般的には、コマンドラインツールでの利用となるでしょう。
複雑なことがしたい場合は、Python APIの利用になります。

Instaloaderを使えば、スクレイピングをする必要もなくなるかもしれません。

また、Instaloaderは自動ログインにも対応しています。

しかし、自動で「いいね」まではInstaloaderではできません。

あくまで、Instaloaderはインスタからの情報収集で用いることになります。

以上、Instaloaderについて説明しました。
次は、Instaloaderのシステム要件を確認します。

Instaloaderのシステム要件

現時点(2022年3月)でのInstaloaderの最新バージョンは、4.8.4となります。
この最新バージョンは、2022年1月16日にリリースされています。

サポートOSに関しては、以下を含むクロスプラットフォーム対応です。

  • Windows
  • macOS
  • Linux

サポート対象となるPythonのバージョンは、以下となっています。

  • Python 3.6
  • Python 3.7
  • Python 3.8
  • Python 3.9

以下は、Python公式開発サイクルです。

バージョンリリース日サポート期限
3.62016年12月23日2021年12月23日
3.72018年6月27日2023年6月27日
3.82019年10月14日2024年10月
3.92020年10月5日2025年10月
3.102021年10月4日2026年10月

Python公式開発サイクルを基準にすると、Python 3.10には対応しておいて欲しいです。
そして、Python 3.6はサポート対象外でも構いません。

ただ、Python 3.10の方は安心してください。
Python 3.10でも問題なく動きます。

Instaloaderのシステム要件をまとめると、特に注意すべき点はありません。
利用する側からすると、Python 3.7以降であれば問題ないでしょう。

以上、Instaloaderのシステム要件について説明しました。
次は、Instaloaderをインストールしていきます。

Instaloaderのインストール

検証は、次のバージョンのPythonで行います。

$ python -V
Python 3.10.2

まずは、現状のインストール済みパッケージを確認しておきます。

$ pip list
Package    Version
---------- -------
pip        22.0.4
setuptools 60.10.0
wheel      0.36.2

次にするべきことは、pipとsetuptoolsの更新です。
pipコマンドを使う場合、常に以下のコマンドを実行しておきましょう。

python -m pip install --upgrade pip setuptools

では、Instaloaderのインストールです。
Instaloaderのインストールは、以下のコマンドとなります。

pip install instaloader

Instaloaderのインストールは、すぐに終わります。
終了したら、どんなパッケージがインストールされたのかを確認します。

$ pip list
Package            Version
------------------ ---------
certifi            2021.10.8
charset-normalizer 2.0.12
idna               3.3
instaloader        4.8.4
pip                22.0.4
requests           2.27.1
setuptools         60.10.0
urllib3            1.26.9
wheel              0.36.2

見たことのあるパッケージが、数個インストールされています。
これだけであれば、依存関係でのトラブルは発生しないでしょう。

それでも心配だという人は、Python仮想環境を利用しましょう。

以上、Instaloaderのインストールを説明しました。
次は、Instaloaderの動作確認を行います。

Instaloaderの動作確認

Instaloaderのインストールが成功したら、次のコマンドが利用可能です。

instaloader --version

上記コマンドを実行すると、インストールしたInstaloaderのバージョンを確認できます。

$ instaloader --version
4.8.4

あとは、ヘルプも確認しておきます。

$ instaloader --help
usage: 
instaloader [--comments] [--geotags]
            [--stories] [--highlights] [--tagged] [--igtv]
            [--login YOUR-USERNAME] [--fast-update]
            profile | "#hashtag" | %location_id | :stories | :feed | :saved
instaloader --help

Download pictures (or videos) along with their captions and other metadata from Instagram.

What to Download:
  Specify a list of targets. For each of these, Instaloader creates a folder and downloads all posts. The following targets are supported:

  profile               Download profile. If an already-downloaded profile has been renamed, Instaloader automatically finds it by its unique ID and renames the folder
                        likewise.
  @profile              Download all followees of profile. Requires --login. Consider using :feed rather than @yourself.
  "#hashtag"            Download #hashtag.
  %location_id          Download %location_id. Requires --login.
  :feed                 Download pictures from your feed. Requires --login.
  :stories              Download the stories of your followees. Requires --login.
  :saved                Download the posts that you marked as saved. Requires --login.
  -- -shortcode         Download the post with the given shortcode
  filename.json[.xz]    Re-Download the given object.
  +args.txt             Read targets (and options) from given textfile.

What to Download of each Post:
  --slide SLIDE         Set what image/interval of a sidecar you want to download.
  --no-pictures         Do not download post pictures. Cannot be used together with --fast-update. Implies --no-video-thumbnails, does not imply --no-videos.
  -V, --no-videos       Do not download videos.
  --no-video-thumbnails
                        Do not download thumbnails of videos.
  -G, --geotags         Download geotags when available. Geotags are stored as a text file with the location's name and a Google Maps link. This requires an additional
                        request to the Instagram server for each picture. Requires --login.
  -C, --comments        Download and update comments for each post. This requires an additional request to the Instagram server for each post, which is why it is
                        disabled by default.
  --no-captions         Do not create txt files.
  --post-metadata-txt POST_METADATA_TXT
                        Template to write in txt file for each Post.
  --storyitem-metadata-txt STORYITEM_METADATA_TXT
                        Template to write in txt file for each StoryItem.
  --no-metadata-json    Do not create a JSON file containing the metadata of each post.
  --no-compress-json    Do not xz compress JSON files, rather create pretty formatted JSONs.

What to Download of each Profile:
  --no-posts            Do not download regular posts.
  --no-profile-pic      Do not download profile picture.
  -s, --stories         Also download stories of each profile that is downloaded. Requires --login.
  --highlights          Also download highlights of each profile that is downloaded. Requires --login.
  --tagged              Also download posts where each profile is tagged.
  --igtv                Also download IGTV videos.

Which Posts to Download:
  -F, --fast-update     For each target, stop when encountering the first already-downloaded picture. This flag is recommended when you use Instaloader to update your
                        personal Instagram archive.
  --latest-stamps [STAMPSFILE]
                        Store the timestamps of latest media scraped for each profile. This allows updating your personal Instagram archive even if you delete the
                        destination directories. If STAMPSFILE is not provided, defaults to /home/gansuke/.config/instaloader/latest-stamps.ini
  --post-filter filter, --only-if filter
                        Expression that, if given, must evaluate to True for each post to be downloaded. Must be a syntactically valid python expression. Variables are
                        evaluated to instaloader.Post attributes. Example: --post-filter=viewer_has_liked.
  --storyitem-filter filter
                        Expression that, if given, must evaluate to True for each storyitem to be downloaded. Must be a syntactically valid python expression.
                        Variables are evaluated to instaloader.StoryItem attributes.
  -c COUNT, --count COUNT
                        Do not attempt to download more than COUNT posts. Applies to #hashtag, %location_id, :feed, and :saved.

Login (Download Private Profiles):
  Instaloader can login to Instagram. This allows downloading private profiles. To login, pass the --login option. Your session cookie (not your password!) will be
  saved to a local file to be reused next time you want Instaloader to login.

  -l YOUR-USERNAME, --login YOUR-USERNAME
                        Login name (profile name) for your Instagram account.
  -f SESSIONFILE, --sessionfile SESSIONFILE
                        Path for loading and storing session key file. Defaults to /home/gansuke/.config/instaloader/session-<login_name>
  -p YOUR-PASSWORD, --password YOUR-PASSWORD
                        Password for your Instagram account. Without this option, you'll be prompted for your password interactively if there is not yet a valid
                        session file.

How to Download:
  --dirname-pattern DIRNAME_PATTERN
                        Name of directory where to store posts. {profile} is replaced by the profile name, {target} is replaced by the target you specified, i.e.
                        either :feed, #hashtag or the profile name. Defaults to '{target}'.
  --filename-pattern FILENAME_PATTERN
                        Prefix of filenames for posts and stories, relative to the directory given with --dirname-pattern. {profile} is replaced by the profile
                        name,{target} is replaced by the target you specified, i.e. either :feed#hashtag or the profile name. Defaults to '{date_utc}_UTC'
  --title-pattern TITLE_PATTERN
                        Prefix of filenames for profile pics, hashtag profile pics, and highlight covers. Defaults to '{date_utc}_UTC_{typename}' if --dirname-pattern
                        contains '{target}' or '{dirname}', or if --dirname-pattern is not specified. Otherwise defaults to '{target}_{date_utc}_UTC_{typename}'.
  --resume-prefix PREFIX
                        Prefix for filenames that are used to save the information to resume an interrupted download.
  --no-resume           Do not resume a previously-aborted download iteration, and do not save such information when interrupted.
  --user-agent USER_AGENT
                        User Agent to use for HTTP requests. Defaults to 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90
                        Safari/537.36'.
  --max-connection-attempts N
                        Maximum number of connection attempts until a request is aborted. Defaults to 3. If a connection fails, it can be manually skipped by hitting
                        CTRL+C. Set this to 0 to retry infinitely.
  --request-timeout N   Seconds to wait before timing out a connection request. Defaults to 300.
  --abort-on STATUS_CODES
                        Comma-separated list of HTTP status codes that cause Instaloader to abort, bypassing all retry logic.
  --no-iphone           Do not attempt to download iPhone version of images and videos.

Miscellaneous Options:
  -q, --quiet           Disable user interaction, i.e. do not print messages (except errors) and fail if login credentials are needed but not given. This makes
                        Instaloader suitable as a cron job.
  -h, --help            Show this help message and exit.
  --version             Show version number and exit.

The complete documentation can be found at https://instaloader.github.io/.

ヘルプを見ると、多くのことができそうです。

以上、Instaloaderの動作確認を説明しました。

追記 2022年3月21日
以下の記事では、Instaloaderを使って投稿を取得する方法を解説しています。

タイトルとURLをコピーしました