CoderCastrov logo
CoderCastrov
Технологии

Как извлечь данные из Instalooter с помощью Python

Как извлечь данные из Instalooter с помощью Python
просмотров
6 мин чтение
#Технологии

Простой учебник по извлечению данных из файлов JSON

В предыдущей публикации мы уже обсудили, как собирать данные с Instagram, где одним из способов сбора данных Instagram в Python является использование Instalooter. Как мы знаем, метаданные, полученные из Instalooter, представлены в формате json. Если вы уже посмотрели содержимое этих метаданных, вам может быть немного сложно извлечь данные из них.

В этой публикации я расскажу, как извлечь эти метаданные, чтобы их можно было использовать для создания анализа или чего-либо еще. Если вы еще не прочитали мою предыдущую статью о том, как собирать данные в Instagram, я рекомендую вам сначала прочитать эту публикацию по ссылке ниже.

Cara Mudah Parsing Instagram dengan Menggunakan Instalooter

Melakukan parsing hanya dengan satu perintah

medium.com

Disini, kita tidak perlu menginstal library apapun, karena library yang kita butuhkan sudah disediakan oleh python.

Mari kita mulai, tahap pertama adalah dengan memanggil file yang akan kita ekstrak. Disini kita akan menggunakan library json untuk bisa melihat isi dari suatu file karena file yang akan kita panggil adalah file JSON.

import json

Lalu kita akan memanggil file yang akan kita ekstrak. Kamu bebas memilih file yang akan kamu gunakan.

file = open("miloo.project/2379697999387348728.json")
data_json = json.load(file)

Dan inilah isi dari file tersebut.

{'__typename': 'GraphSidecar',
 'caption_is_edited': False,
 'commenting_disabled_for_viewer': False,
 'comments_disabled': False,
 'dimensions': {'height': 1080, 'width': 1080},
 'display_resources': [{'config_height': 640,
   'config_width': 640,
   'src': 'https://instagram.fcgk9-1.fna.fbcdn.net/v/t51.2885-15/sh0.08/e35/s640x640/118076040_4938311339527646_2878854051651365933_n.jpg?_nc_ht=instagram.fcgk9-1.fna.fbcdn.net&_nc_cat=102&_nc_ohc=8d364zsqX9YAX_p6BpB&oh=a7b5091d5ac14f3eab51df8801093d6e&oe=5F68871B'},...}...}

Jika melihat sekilas, kita mungkin bingung melihat data-data tersebut. Kamu bisa menggunakan Online JSON Viewer** **agar tampilan JSON nya lebih rapi. Disini, saya akan memulai dari hal-hal yang sederhana. Misalnya kita ingin melihat gambar dari postingan tersebut. Maka saya akan menggunakan kode berikut.

from PIL import Image
from io import BytesIO
import requestsresponse = requests.get(data_json["display_resources"][0]["src"])
img = Image.open(BytesIO(response.content))

Dan hasilnya adalah seperti ini.

Kita juga bisa mengambil caption dari postingan tersebut. Caranya adalah dengan menggunakan memperhatikan key yang mengandung kata edge_media. Karena kita ingin mengambil caption maka key yang kita ambil adalah edge_media_to_caption. Lalu kita akan menggunakan kode berikut untuk melihat isi dari key tersebut.

data_json["edge_media_to_caption"]

Dan berikut hasilnya.

{'edges': [{'node': {'text': 'Gimana nih liburannya gais?\n.\nLibur-libur gini seru kali ya untuk iseng belajar hal-hal baru.\n.\nBerikut ada tips nih dari kak @fahmisalmann utk belajar python sambil ngisi hari liburmu\n.\n#data #python #machinelearning #wordcloud #pycharm #terminal #datascientist #ai'}}]}

Dari hasil diatas bisa terlihat bahwa isi dari caption tersebut berada di dalam text, sehingga kita memerlukan kode tambahan untuk mengambil caption tersebut, yaitu dengan kode di bawah ini.

data_json["edge_media_to_caption"]["edges"][0]["node"]["text"]

Dan hasilnya adalah seperti di bawah ini.

'Gimana nih liburannya gais?Libur-libur gini seru kali ya untuk iseng belajar hal-hal baruBerikut ada tips nih dari kak @fahmisalmann utk belajar python sambil ngisi hari liburmu#data #python #machinelearning #wordcloud #pycharm #terminal #datascientist #ai'

Jika kamu mengalami kendala error, maka kemungkinannya adalah file/postingan yang kamu gunakan tidak mempunyai caption. Kamu bisa menggantinya dengan postingan lain yang mempunyai caption.

Kamu juga bisa mengambil komentar dari suatu postingan. Sama seperti tadi, kita cukup memperhatikan key yang mengandung kata edge_media. Namun, disini kita akan mendapatkan 2 pilihan, yaitu edge_media_preview_comment dan edge_media_to_parent_comment. Key edge_media_preview_comment digunakan untuk mengambil komentar preview, dan edge_media_to_parent_comment berisi seluruh komentar, sehingga disini kita akan menggunakan edge_media_to_parent_comment.

data_json["edge_media_to_parent_comment"]

Dimana akan muncul hasil sebagai berikut.

{'count': 3,
 'edges': [{'node': {'created_at': 1597902365,
    'did_report_as_spam': False,
    'edge_liked_by': {'count': 0},
    'edge_threaded_comments': {'count': 2,
     'edges': [{'node': {'created_at': 1597902755,
        'did_report_as_spam': False,
        'edge_liked_by': {'count': 0},
        'id': '17884041436703217',
        'is_restricted_pending': False,
        'owner': {'id': '10971940298',
         'is_verified': False,
         'profile_pic_url': 'https://instagram.fcgk8-2.fna.fbcdn.net/v/t51.2885-19/s150x150/83677256_3158889457474039_9187016332695044096_n.jpg?_nc_ht=instagram.fcgk8-2.fna.fbcdn.net&_nc_cat=107&_nc_ohc=Gv8n7MzcdnwAX_iJCgq&oh=ee07ee0f8516463993252969ef20170c&oe=5F6A3663',
         'username': 'miloo.project'},
        'text': '@rahmatridham kereen kereen kita coba yuk kak',
        'viewer_has_liked': False}},...}

Jika kamu mengalami kendala error, seperti kasus sebelumnya, kemungkinannya adalah file/postingan yang kamu gunakan tidak mempunyai komentar. Kamu bisa menggantinya dengan postingan lain yang mempunyai komentar.

Untuk mengambil parent comment kita bisa menggunakan kode berikut.

data_json["edge_media_to_parent_comment"]["edges"][0]["node"]["text"]
'@tedysuwega keren niihh'

Selain itu, kita juga bisa mengambil info dari orang yang memberikan komentar tersebut.

data_json["edge_media_to_parent_comment"]["edges"][0]["node"]["owner"]
{'id': '1478466919',
 'is_verified': False,
 'profile_pic_url': 'https://instagram.fcgk8-1.fna.fbcdn.net/v/t51.2885-19/s150x150/89713933_136310137800924_7496198595725492224_n.jpg?_nc_ht=instagram.fcgk8-1.fna.fbcdn.net&_nc_cat=100&_nc_ohc=-BE6F6F0-JsAX8SCvMU&oh=5195f1e20db7f8e4be1fa0f2a239ac6a&oe=5F68E10D',
 'username': 'rahmatridham'}

Misalnya, kita ingin mengambil username dari akun tersebut, kita tinggal menggunakan sintaks data_json[“edge_media_to_parent_comment”][“edges”][0][“node”][“owner”][“username”] sehingga akan tampil hasil sebagai berikut.

'rahmatridham'

Selain mengambil parent comment, kita juga bisa mengambil komentar-komentar balasannya. Misalnya dari komentar tadi, kita ingin mengetahui siapa dan apa balasan untuk komentar tersebut. Caranya adalah seperti ini.

parent_comment_info = data_json["edge_media_to_parent_comment"]["edges"][0]["node"]
parent_comment_info["edge_threaded_comments"]
{'count': 2,
 'edges': [{'node': {'created_at': 1597902755,
    'did_report_as_spam': False,
    'edge_liked_by': {'count': 0},
    'id': '17884041436703217',
    'is_restricted_pending': False,
    'owner': {'id': '10971940298',
     'is_verified': False,
     'profile_pic_url': 'https://instagram.fcgk8-2.fna.fbcdn.net/v/t51.2885-19/s150x150/83677256_3158889457474039_9187016332695044096_n.jpg?_nc_ht=instagram.fcgk8-2.fna.fbcdn.net&_nc_cat=107&_nc_ohc=Gv8n7MzcdnwAX_iJCgq&oh=ee07ee0f8516463993252969ef20170c&oe=5F6A3663',
     'username': 'miloo.project'},
    'text': '@rahmatridham kereen kereen kita coba yuk kak',
    'viewer_has_liked': False}},...}

Dari hasil tersebut terdapat informasi yang mengatakan bahwa terdapat 2 komentar balasan dari komentar sebelumnya ('count': 2). Untuk mendapatkan komentar tersebut, kita bisa lakukan seperti ini.

for comment_info in parent_comment_info["edge_threaded_comments"]["edges"]:
    print(comment_info["node"]["text"])

Dan hasilnya sebagai berikut.

@rahmatridham kereen kereen kita coba yuk kak
@rahmatridham yuk coba

Lalu kita tambahkan username untuk masing-masing komentar seperti ini.

for comment_info in parent_comment_info["edge_threaded_comments"]["edges"]:
    print("{}\t: {}".format(comment_info["node"]["owner"]["username"], comment_info["node"]["text"]))
miloo.project	: @rahmatridham kereen kereen kita coba yuk kak
tedysuwega	: @rahmatridham yuk coba

Selain dengan membuka file satu per satu, kita juga bisa secara otomatis untuk membuka file sekaligus, yaitu dengan menggunakan glob. Contoh dari penggunaan glob adalah sebagai berikut.

Dan hasilnya adalah sebagai berikut.

Dirgahayu HUT Republik Indonesia yang ke-75
.
Semoga Rukun bangsanya, Produktif warganya, Inovatif anak mudanya🙏🏻🙏🏻
.
#indonesia #independenceday #75thanniversary #indonesia75th
--------------------------------------------------------------------
Gimana nih liburannya gais?
.
Libur-libur gini seru kali ya untuk iseng belajar hal-hal baru.
.
Berikut ada tips nih dari kak @fahmisalmann utk belajar python sambil ngisi hari liburmu
.
#data #python #machinelearning #wordcloud #pycharm #terminal #datascientist #ai
--------------------------------------------------------------------
Banyak orang ingin dirinya dapat meninggalkan kesan yang bertahan lama pada orang lain, agar dapat diingat oleh banyak orang.
.
Nah berikut ada tips nih dari buku Dale Carniege tentang “how to win friends and influence people”.
.
Semoga bermanfaat ya 😚
.
#selfcare #selfimprovement #dalecarnegie #friendship #people
--------------------------------------------------------------------
[Edisi #Ngemil: Ngobrol bareng MILOO]

Menjadi suatu tantangan tersendiri bagi kita dalam meng-apply pekerjaan yang memiliki skill khusus, tak terkecuali apply sebagai UI/UX designer.

Apa saja yang perlu disiapkan? Seperti apa tips memenangkan pekerjaannya?

MILOO #Ngemil, Proudly Present:

»»»Ngobrolin UI/UX eps.2«««
.
Topic: Getting Job in UI/UX Designer!
.
📅 : Sabtu, 22 Agustus 2020
⏰ : 16.00 s.d. 17.00 WIB
.
RSVP:
DM di IG @miloo.project
Format: Nama_email_no.HP
.
Ayo segera daftar! Pesertanya terbatas!
Sampai ketemu di room ya!
.
Terimakasih,
miloo.id (WA: 08118383860)
--------------------------------------------------------------------

Selain cara-cara diatas kamu juga bisa mengekstak elemen-elemen lain seperti jumlah likes, akun yang di-mention, dll.


Berikut adalah cara mengekstraksi data dari Instalooter. Jika kamu mempunyai pertanyaan, kamu bisa menghubungi miloo.project di Instagram atau kamu bisa memberi komentar di artikel ini. Semoga bermanfaat.