Part 1 Natural Language Processing : Crawling Tweet dengan GetOldTweet3

Thariq Ramadhan
4 min readApr 19, 2020

--

Dari zaman-zaman bahela sebenarnya saya sudah ingin sekali menulis sesuatu. Namun masih terkendala waktu dan niat hehehe. Berhubung sekarang sedang masa karantina pandemi COVID-19 dan lagi ada konten yang ingin ditulis maka lahirlah tulisan ini. Kemungkinan tulisannya akan terbagi menjadi 3 bagian crawling, preproscessing, dan machine learning.

Jadi beberapa minggu yang lalu teman dekat saya meminta tolong untuk kepada saya untuk dibantu tugasnya soal analisa sentimendi Twitter. Berhubung saat itu saya lagi kepo-keponya sama Machine Learning dan saya tau dianya juga nggak ada basic data science sama sekali(menggunakan python aja belum pernah cuy) soalnya aslinya dia dari sistem informasi(ya nggak jauh-jauh amatlah ya wkwk) jadi dianya saya bantu. Pada artikel ini data sentimen yang akan kita crawling peraturan soal cingkrang di ASN(Aparatur Sipil Negara).

Menambang ~ Crawling

Ilustrasi

Pernah lihat penambang emas mencari emas?. Nah kalau dianalogikan crawling itu mirip-mirip dengan menambang wkwkw. Sebelum kita menambang tweet cingkarang ASN perlu disiapkan peralatan-peralatan untuk menambang. Kita akan menambang menggunakan bahasa python dengan bantuan library GetOldTweet3. Nah, setelah alat-alat kita siap maka kita siap untuk pergi ke tambang emas kita yaitu Google Colab.

Kenapa GetOldTweet3, bukan Tweepy?

Disini library yang akan kita gunakan adalah GetOldTweet3. Library ini akan meniru model searching pada twitter.

Searching di Twitter

Library GetOldTweet3 yang dimaintain Dmitry Mottl merupakan perbaikan dari library Jefferson Henrique’s GetOldTweets-python. Dari deskripsinya library ini memang ditujukan untuk mencari tweet-tweet lama. Untuk deskripsi lebih lengkapnya library ini bisa ngapain aja bisa dilihat disini.

Selain library GetOldTweet3 sebenarnya ada library lain yang lebih dikenal yaitu Tweepy. Namun, Tweepy terbatas hanya untuk tweet 7 hari yang lalu. Sedangkan pelarangan cingkrang di ASN dilakukan pada tahun lalu(sekitar bulan November 2019). Sehingga tweet-tweet yang dicrawling oleh Tweepy sudah tidak relevan lagi.

Untuk menggunakan Tweepy harus kita mempunyai akun terlebih dahulu. Jadi harus daftar dulu, mengisi formulir, dan menunggu konfirmasi dari pihak Twitter. Proses yang panjang ini sebanding dengan akses crawling yang didapatkan. Karena tidak ada pada library GetOldTweet3.

Akses yang ditawarkan oleh Tweepy

Yuk Mulai Coding!!!

Jadi kita akan memulai crawling tweet dengan kata cingkrang dan ASN. Kemudian tweet-tweet ini akan simpan ke dalam file dengan format CSV.

Untuk mengikuti sesi ini. Silahkan buka Google Colab pada link ini. Bila masih belum paham bagaimana menggunakan Google Colab. Sebelum memulai sesi ini dapat dilihat video berikut ini.

!pip install GetOldTweets3

Pertama-tama kita lakukan installasi library GetOldTweet3.

import GetOldTweets3 as got3import csv

Setelah itu import library GetOldTweet3 dan csv.

csvFile = open('crawling_tweet.csv', 'a')csvWriter = csv.writer(csvFile)

Fungsi open() akan membuat file dengan nama crawling_test. Parameter ‘a’ berarti append yang akan membuat file tersebut bila tidak ada. Sedangkan fungsi csv.writer() merupakan fungsi untuk dapat menulis/mengisi file csv.

until = "2019–11–08"keyword = "cingkrang asn"max_tweets = 200language = "id"

Definisikan variable yang akan nantinya akan digunakan untuk kriteria crawling.

  • until : batas atas waktu tweetnya dibuat
  • keyword : kata kunci yang ingin dicari
  • max_tweets : jumlah tweet crawling yang diinginkan
  • languange : bahasa dari tweet yang ingin dicrawling
tweetCriteria = got3.manager.TweetCriteria().setUntil(until).setQuerySearch(keyword).setMaxTweets(max_tweets).setLang(language)for i in range(max_tweets):tweet = got3.manager.TweetManager.getTweets(tweetCriteria)[i]print(tweet.date, tweet.text)csvWriter.writerow([tweet.date, tweet.text])

TweetCriteria merupakan variable untuk mensetting kriteria tweet yang ingin kita cari. Selain kriteria tersebut, ada kriteria-kriteria lain seperti username, top tweet, jarak, dll yang dapat disetting. Kriterianya bisa dilihat disini pada bagian TwitterCriteria.

Criteria tersebut akan digunakan oleh fungsi got3.manager.TweetManager.getTweets() untuk melakukan crawling dan disimpan pada variabel tweet. Variable tweet sendiri memiliki Class yaitu :

  • id (str)
  • permalink (str)
  • username (str)
  • to (str)
  • text (str)
  • date (datetime) in UTC
  • retweets (int)
  • favorites (int)
  • mentions (str)
  • hashtags (str)
  • geo (str)

Namun data yang akan kita simpan dan tampilkan hanya data tweet date dan text. Berikut hasilnya :

Contoh hasil crawling

Terkadang saat crawling terlalu banyak tweet akan terjadi error. Dikarenakan terlalu banyak request.

Error

Untuk mengatasi error ini saya belum menemukan solusi yang bagus. Jadi untuk menghadapi ini saya mengganti variable until dengan date terakhir tweet yang dicrawling dan melakukan crawling ulang. Pada file csv data-data hasil crawling sudah otomatis ditambahkan tidak dioverwrite. Trade-offnya jumlah tweet yang dicari menjadi tidak relevan.

Untuk melihat sudah berapa banyak tweet yang sudah dicrawling. Bisa dibuka menu “files” dengan icon seperti icon folder pada bagian kiri Google Colab. Kemudian klik dua kali crawling_tweet.csv pada sebalah kanan akan muncul overview tweet yang sudah dicrawling. Jumlah tweet yang dicrawling sama dengan entries + 1. Bila merasa jumlah tweetnya yang dicrawling sudah cukup. Klik kanan crawling_tweet.csv dan klik download.

Sampai ketemu kembali

Yeay… kita sudah berhasil melakukan crawling tweet. Silahkan kalau kamu mau bisa bereksperimen dengan mengubah parameter dan kodenya. Python notebook dan hasil crawling saya simpan disini. Sampai jumpa di artikel berikutnya yaitu Bersih-bersih Data Crawling.

--

--

Thariq Ramadhan
Thariq Ramadhan

Written by Thariq Ramadhan

An electrical engineering student interested in the Internet of Things (IoT) ranging from hardware: sensors, controllers, microcontrollers to software: backend

No responses yet