Cara Crawl Instagram Menggunakan Python dan InstaLooter
Instagram kini menjadi salah satu media sosial yang paling populer di dunia. Fitur menarik yang dihadirkan mampu menggaet orang-orang mulai dari kalangan anak-anak hingga orang tua. Instagram sendiri tidak memberikan fitur untuk mengunduh media seperti foto, video, dan Instagram story.
Oleh karena itu, banyak orang mencoba melakukan crawling Instagram untuk mendapatkan informasi seperti foto, video, dan lain-lain. Sebenarnya Instagram sendiri sudah menyediakan API untuk para developer. Tetapi, kita harus mendaftarkan aplikasi kita lalu Instagram akan memberikan OAuth dan token API. Hal itu akan cukup sulit apabila project aplikasi kita tidak cukup besar untuk dapat diterima oleh pihak Instagram.
Solusi dari semua itu adalah InstaLooter. Menurut situs resminya, instalooter.readthedocs.io, InstaLooter adalah program yang dapat digunakan untuk mengunduh gambar dan video dari segala profil dan hashtag di Instagram tanpa menggunakan API token. Selain bisa digunakan dengan command line, InstaLooter juga bisa diterapkan pada pemrograman Python.
Command Line
Hal pertama yang perlu dilakukan adalah instalasi package InstaLooter dengan command:
$ pip install instalooter
Setelah itu mari kita coba mengunduh foto atau video. Saya akan mengunduh foto terbaru dari akun elwonoccino.
$ instalooter user "elwonoccino" -n 1
Dengan command tersebut saya mencoba mengunduh foto atau video dari akun elwonoccino dengan jumlah 1. Option -n dan diikuti dengan angka menunjukkan seberapa banyak foto atau video yang ingin diunduh.
Sekarang kita coba untuk mengunduh per post.
Anda bisa gunakan kode url-nya saja,
$ instalooter post "B_E_mUQA_sv"
atau url lengkapnya.
$ instalooter post "https://www.instagram.com/p/B_E_mUQA_sv/"
Anda dapat mengunjungi website resminya, Usage — InstaLooter 2.4.4 documentation untuk mendapatkan informasi yang lebih lengkap, atau bisa juga dengan mengetikkan command:
$ instalooter -h
Pengaplikasian pada Python
Untuk dapat digunakan pada Python, kita perlu memanggil InstaLooter terlebih dahulu sebagai sebuah modul. Kali ini saya akan coba untuk memanggil modul PostLooter.
from instalooter.looters import PostLooter
Setelah itu kita coba buat code sederhana yang akan mengunduh salah satu postingan elwonoccino.
from instalooter.looters import PostLooter
post = PostLooter("B_E_mUQA_sv")
post.download("elwonoccino")
Setelah itu, ketika programnya dijalankan, foto pada postingan tersebut akan berhasil diunduh.
Parameter pertama pada post.download(), "elwonoccino", merupakan parameter yang menunjukkan destinasi atau tempat tujuan meletakkan foto atau video yang akan diunduh.
Lalu, bagaimana cara melakukan crawling pada caption atau komentar?
Pertama-tama, kita memerlukan metadata pada postingan tersebut. Metadata yang dihasilkan terdiri dari file JSON yang memuat caption, komentar, dan lain-lain. Kita akan mengambil metadata melalui command line saja.
$ instalooter post "B_E_mUQA_sv" -D
Option -D digunakan untuk mengambil metadata saja tanpa mengunduh foto atau video pada postingan terkait.
Anda bisa membuka file JSON secara online dengan JSON Viewer Online. Saya sendiri akan membuka file JSON ini melalui text editor.
Tampilan isi dari file JSON akan seperti ini.
Jika kita telusuri lebih dalam, kita akan menemukan key "edge_media_to_caption". Key tersebut dapat kita gunakan untuk meng-crawl caption. Berikut code untuk mendapatkan mentahan caption.
from instalooter.looters import PostLooter
post = PostLooter('B_E_mUQA_s')
info = post.get_post_info('B_E_mUQA_sv')
caption = info["edge_media_to_caption"]
print(caption)
from instalooter.looters import PostLooter
post = PostLooter('B_E_mUQA_s')
info = post.get_post_info('B_E_mUQA_sv')
caption = info["edge_media_to_caption"]["edges"][0]["node"]["text"]
print(caption)
Maka, ketika di-run kita akan mendapatkan output caption.
Selanjutnya, bagaimana kita dapat mengambil komentar pada postingan? Mudah saja, gunakan key "edge_media_to_parent_comment". Kali ini saya akan coba untuk mengambil semua komentar beserta balasannya. Untuk balasannya sendiri, kita dapat gunakan key "edge_threaded_comments".
Berikut ini code untuk menampilkan semua komentar beserta balasan pada postingan elwonoccino.
from instalooter.looters import PostLooter post = PostLooter('B_E_mUQA_sv') info = post.get_post_info('B_E_mUQA_sv') comment = info["edge_media_to_parent_comment"] list_comment = comment["edges"] for comments in list_comment: list_comment = comments["node"] print("-", list_comment["owner"]["username"],": " ,list_comment["text"]) list_reply = list_comment["edge_threaded_comments"]["edges"] if len(list_reply) != 0: for replies in list_reply: list_reply = replies["node"] print("\tBalasan: ", list_reply["owner"]["username"], ": ", list_reply["text"])
Jika programnya di-run, akan muncul seperti ini.
Atau kurang lebih seperti ini.
- lilqied : ??
- barbosa.jdv : and that, my son, is how you lose a game of dota
- eshidki28 : In sea bkb is for kids :)
- sedwo : Imagine going daedalus on mk
Balasan: sedwo : @sedwo and not memehammer ??
- adriancyho : In SEA, mmr is nothing, behavior score is everything. Behavior score low = 4 trash on team.
Balasan: aingtehsaha77 : @adriancyho it doesnt matter ,i still get bunch of idiot team ,even with 10k conduct
summary :(
- fahrezid21 : Passive bkb
- kia_shoaey : @arya.capt4in dqiqan jnabt
Balasan: arya.capt4in : @kia_shoaey ????????
- ur_shoaib : Hahhaha
- bkurnali : MK players: 50% Smurfs, 50% utter retards
- foryoyandoyo : ??????????
- riplogicc : @_muddledcreature._ zongaa
Balasan: _muddledcreature._ : @riplogicc We dont buy em at heralds??
Balasan: riplogicc : @_muddledcreature._ *cries in position 3,4,5*
- seppph_.68 : Bruh they have lots of cc they might kite you
Balasan: seppph_.68 : @seph_gardiola Mk: They can't kite me if they die immediately
Balasan: legaviotini : I have seen too many snipers with 5 items and no bkb die in two spells to not know how tilting is seeing the daedalus when you ping them to buy bkb xd
- declannnnnnn : Cries in 2k
- nggoraa : Its true bois, some player just think that bkb is useless
Balasan: cerealprotector : @nggoraa yeah, like there is no cc in this game.
- joshuamanasye : u really should play with me
- affanwinurrahman : My mid zeus be like
- darius_woodward : It is kind of annoying when someone tells you to go a certain item like they know so much more than you despite being the same rank
- amraditt : some archon players said if bkb has no damage lol
- helorocino : This meme thing is nice and all. But is it as good as Dota 2?
- bagusyudhayuswara : Did bamnlozed have ig ? @elwonoccino
- chilledbit : Bruh when's the next post..... Been so long
- klodjan.shpendi : Make new videos bruda
Anda bisa melihat dokumentasi modul-modul yang tersedia pada InstaLooter di Python Module Index - InstaLooter. Dengan banyaknya data yang tersedia, Anda bisa membuat berbagai macam hal dengan library InstaLooter.
Semoga bermanfaat dan sukses selalu.
Tetap jaga kesehatan dan terapkan protokol kesehatan.
0 Komentar