Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get JSON from website (instagram)

I recently got the idea to scrape information from instagram accounts and their posts, like the amount of comments or amount of likes. I got so far that I figured out while debugging in chrome that for example the link https://www.instagram.com/instagram/?__a under the network tab returns a JSON with the wanted information, but what is actually loaded is still the normal website html code.

json data

so far I tried in python with this code:

import urllib.request
r = urllib.request.urlopen(url)
print(r.read())

or in javascript :

window.onload = function () {
    res = fetch("https://www.instagram.com/instagram/?__a", {
        method: 'get'
    }).then(function (data) {
        return data.json();
    }).catch(function (error) {
        console.log("ERROR".concat(error.toString()));
    });
    console.log(res.user);
};

So the problem I have, is that when using these functions I only get the website code (html), is there a way to only get the JSON which is loaded in the background? I know people will recommend me using the instagram api, but I have no website nor a company to register.

like image 857
Patrick.H Avatar asked Feb 07 '18 21:02

Patrick.H


2 Answers

I ran into a problem trying to get the API to do what I wanted, and really just needed JSON data including urls and captions for images for a specific account.

Use the following GET request:

https://www.instagram.com/account_name/?__a=1

where account_name is the profile I'm scraping.

It returns all JSON I needed for my task.

like image 111
Michael Goetti Avatar answered Oct 21 '22 19:10

Michael Goetti


Trying to get the Json loaded in the background is too much work for a simple problem.

You should use the Instagram Api. Just put your name as a company.

like image 20
Yusof Bandar Avatar answered Oct 21 '22 18:10

Yusof Bandar