Menggambil(Grab) Semua Link Post Profile Instragram

Share Post:

Share on facebook
Share on linkedin
Share on twitter
Share on pinterest
Share on email

Beberapa minggu kemarin, saya kesusahan ingin repost post-post saya yang lama, karena terlalu dalam, jadi scroll ke bawahnya terlalu banyak. Sering kali yang saya repost hanya post-post yang baru saja dikarenakan susahnya melihat postingan awal instagram.

Muncullah sebuah ide untuk membuat script sederhana untuk mengambil semua list post sehingga nanti tinggal repost saja menggunakan app android yang ada di google play.

Berikut adalah javascript untuk mengambil semua post pada profile instagram:

// Get all post link list from an Instagram profile 
// @params DOM Links list
// @return String Link without HTML tag. Ex: https://www.instagram.com/xxxxxxxxxx
function getLinks(list) {
	var links = [];
	for(var i = 0; i < list.length; i++) {
		links.push(list[i].getElementsByTagName('a')[0].href);
	}

	return links;
}

// Add link and remove duplicate link
function LinkList() {
	this.list = [];
	this.add = function(link) {
		var isFound = false;
		for(var i = 0; i<this.list.length; i++) {
			if(link == this.list[i]) {
				return;
			}
		}

		this.list.push(link);		
	}
};

// Main script
var Main = function() {
	this.intervalId = null;
	this.linkLists = null;

	this.start = function() {
		var vm = this;
		this.intervalId = setInterval(function() {
			var list = document.getElementsByClassName("v1Nh3");
			var links = getLinks(list);
			// console.log('links', links);

			for(var i = 0; i<links.length; i++) {
				vm.linkLists.add(links[i]);
			}
			
			console.log('length:', vm.getLinks().length);	
		}, 1500);
	};

	this.stop = function() {
		if(this.intervalId)
			clearInterval(this.intervalId);
	};

	this.getLinks = function() {
		return this.linkLists.list;
	};

	// Constructor
	this.linkLists = new LinkList();
}

var main = new Main();
main.start();
// main.stop()

Untuk melakukannya ada hal-hal yang perlu di persiapkan:

  1. Laptop/Desktop
  2. Web Browser: Disarankan chrome, karena dalam tutorial ini menggunakan chrome. Supaya seragam saja.

Trik ini hanya bisa dilakukan di desktop saja, bukan di device android.

  1. Buka browser Chrome
  2. Buka URL profile instagram. Contoh: https://www.instagram.com/9gag/

    Instagram Profile

    Instagram Profile

  3. Buka inspect dengan cara
    • Menekan Ctrl+shift+i
    • Click kanan dan pilih Inspect

      Click Right, Inspect

      Click Right, Inspect

  4. Click Tab Console

    Tab Console

    Tab Console

  5. Copy paste code Javascript diatas

    5. Tab Console, Paste Javascript

    5. Tab Console, Paste Javascript

  6. Scroll Kebawah: karena website instagram menggunakan AJAX(lazy load) untuk melakukan load post-post lama. Scroll kebawah hingga paling bawah, nanti instagram akan melakukan loading post lamanya.
  7. Perhatikan pada windows console. Disana tertulis “length: xx”. Ini menunjukkan bahwa sudah ada xx link yang didapatkan. Untuk melihat isi link tersebut bisa langsung ketikkan “main.getLinks()”
    7. Tab Console, length:xx

    7. Tab Console, length:xx

    7.1. Tab Console, scroll, length increase

    7.1. Tab Console, scroll, length increase

    7.2. Tab Console, main.getlinks()

    7.2. Tab Console, main.getlinks()

  8. Lakukan langkah ke 5 hingga post terlama atau bisa berhenti kalau sudah dirasa cukup. Karena jika anda mau menggambil semua post 9gag dimana mempunyai 19k post. Saya khawatir jari dengan kesehatan jari anda nantinya.
  9. Setelah semua selesai ketikkan “JSON.stringfy(main.getLinks())”

    8. Tab Console, get string

    8. Tab Console, get string

  10. Copy semua string diatas dari petik(“) awal hingga petik akhir(“)

    9. Tab Console, copy string

    9. Tab Console, copy string

  11. Buka https://json-csv.com/ lalu copy paste semua string tadi ke textarea disana

    11. JSON to CSV

    11. JSON to CSV

  12. Scroll ke bawah, disana akan ada banyak pilihan. Bisa Download CSV, Download XLS, dan Copy to Clipboard.

    12. JSON to CSV

    12. JSON to CSV

  13. Selesai

Proses yang memakan waktu adalah proses nomor 5. Sebenarnya script diatas bisa diperbaiki dengan menambahkan fitur autoscroll ke bawah. Tetapi scriptnya akan makin panjang.

Jika banyak yang request mungkin akan saya buatkan. Silakan comment di bawah jika ada pertanyaan atau kesulitan.

Leave a Reply

Your email address will not be published.

CAPTCHA Image

*