Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

Instagramで特定のユーザーのタイムラインをjsonで取得する(認証不要)

More than 3 years have passed since last update.

今回紹介する方法は、InstagramのAPIではなく、Instagramのユーザーページからユーザータイムラインの情報を取得する方法です。

方法

ユーザータイムラインの取得

以下のURLをGETすると、<userid>に指定したユーザーの最新の投稿20件とそれに紐づくコメントなどの情報がjson形式で取得できます。

url
https://www.instagram.com/<userid>/?__a=1
https://www.instagram.com/daikiojm/?__a=1

全件取得するには

随分と雑ですが、全件取得してみました。
APIで取得する際には、countやmax_id、min_idなどを指定して取得件数を操作できるようですが、APIを使わないこの方法ではcountパラメータは使えないようです。
max_idパラメータは使えるようなので、node.jsで再帰的に全件取得する方法を試してみました。

'use strict';
const request = require('request');

const url = 'https://www.instagram.com/daikiojm/?__a=1';
const allItems = [];

const getMedia = (maxId) => {
  const requestUrl =  maxId ? `${url}&max_id=${maxId}` : url;
  request.get(requestUrl, (err, data) => {
    if (!err) {
      const json = JSON.parse(data.body);
      const media = json.user.media; 
      media.nodes.forEach(elm => {
        allItems.push(elm);
      });
      if (media.page_info.has_next_page) {
        getMedia(media.nodes[media.nodes.length - 1].id);
      } else {
        return console.log(allItems);
      }
    } else {
      console.log(err);
    }
  });
}

getMedia();

※ 試しに使ってるユーザーは自分のユーザーです

1件のリクエストで取得できるjsonの形式は次のような形式になっており、
media.page_info. has_next_pageフラグがtrueの場合、最後のitem以降を取得するように次のリクエストを行っています。

スクリーンショット 2017-11-30 13.02.40.png

 終わりに

ひとまず公開ユーザーのユーザー名から投稿内容を取得することが出来ました。
API ドキュメントを探してみましたが、今回紹介した内容に関する情報の記載が見当たりませんでした。(知っている方がいたら教えてほしいです)
公式な方法なのか定かではないので、ガッツリ使う場合は開発者登録を行った後、APIの方を叩くのがいいかと思います。

参考

Instagram.com/username/media no longer working -StackOverflow

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away