Crawling Twitter API

Muchamad Nur Kholis
6 min readJun 30, 2021

--

Twitter merupakan media sosial yang populer, di twitter ini beragam data dan informasi dapat kita dapatkan. Oleh karena itu, tak jarang twitter ini digunakan sebagai media untuk melakukan data mining. Sebenarnya untuk mendapatkan data dari Twitter sendiri ada beberapa cara, di antaranya Scraping & Crawling. Di artikel saya kali ini, saya akan menggunakan teknik crawling API. Hal yang dibutuhkan untuk melakukan crawling Twitter API yaitu akun Twitter dan akun developer untuk mendapatkan hak akses API.

Untuk pembuatan akun Twitter dapat dilakukan dengan mudah dengan mengunjungi twitter.com, sedangkan untuk akun developer kita perlu mengunjungi developer.twitter.com dan membuat akun developer. Setelah itu, pada Menu Bar pilih Projects & Apps > Overview > New Project. Kurang lebih tampilannya akan seperti gambar berikut:

Pada prosesnya, Twitter akan menyajikan beberapa pertanyaan terkait apa yang anda lakukan dengan API tersebut dan untuk apa API tersebut digunakan.

Pada crawling Twitter API ini, saya akan menggunakan Python. Dalam hal ini dibutuhkan library tweepy. Untuk menginstall library ini, bukalah Command Prompt pada windows lalu ketikkan kode berikut:

pip install tweepy

dengan begitu library tweepy sudah terinstall. Dan kita bisa menimpornya ke Python Notebook. Selanjutnya, buka python notebook, dalam hal ini saya menggunakan Jupyter Notebook.

Pertama-tama, impor library yang akan digunakan, yaitu “tweepy” dan “csv” dengan kode seperti berikut:

Kemudian, untuk dapat mengakses API, kita perlu access token, access token secret, api key dan api key secret. Hal ini dapat kita dapatkan dari akun developer. Pada Menu Bar pilih Overview lalu pilih project yang telah kita buat. Setelah itu, pilih “Keys and token” dan akan muncul “API Key and Secret” pada Consumer Keys, lalu klik “Generate”, di sini saya sudah generate jadi akan berubah menjadi “Regenerate”.

Setelah klik “Generate”, access token, access token secret, api key danapi key secret pun telah kita dapatkan. Langkah selanjutnya, kita akan mengakses API Twitter tersebut dengan Python. Pertama, definisikan key dan token seperti berikut:

Untuk dapat mengakses API, kita perlu autentikasi terlebih dahulu, gunakan fungsi .OAuthHandler() dari library tweepy dengan input yaitu api key dan api key secret. Lalu, men-chaining-kan dengan fungsi .set_access_token() dengan input yaitu access token dan access token secret. Agar lebih jelas, perhatikan kode berikut:

Setelah itu, untuk mengaksesnya gunakan fungsi .API() dari library tweepy dengan input yaitu variabel autentikasi dan wait_on_rate_limit yang kita set sebagai “True” seperi berikut:

Selanjutnya, kita akan mendefinisikan artikel apa yang akan kita dapatkan pada variabel search_key. Dalam hal ini saya akan mencari dengan hashtag “horror” seperti berikut:

Sedangkan, koding dibawah variabel search_key bertujuan untuk membuat sebuah file csv kosong yang nantinya akan diisi dengan data hasil crawling kita, dengan nama file csv sama dengan nama search_key yang kita buat. Dalam hal ini, akan menjadi #horror.csv.

Perhatikan input pada fungsi open(), terdapat input berupa “a+” hal ini memungkinkan kita untuk membaca maupun menambahkan isi dari file csv tersebut.

SEBAGAI PENGETAHUAN:

Terdapat beberapa mode dalam membaca file atau berkas teks yaitu:

  1. r: read, mode ini hanya digunakan untuk membaca file saja
  2. w: write, mode ini dapat aku gunakan untuk menulis ke dalam sebuah berkas teks, jika berkas tidak tersedia, maka Python akan secara otomatis membuat sebuah berkas baru dengan nama yang telah di spesifikasikan. Saat menulis dengan menggunakan mode ini, jika file semula tidak kosong, maka isi yang sebelumnya terdapat di dalam berkas akan terhapus.
  3. a: append, mode ini dapat aku gunakan untuk menambahkan isi dari sebuah berkas teks. Mode ini juga akan membuat sebuah berkas teks baru dengan nama yang telah kita spesifikasikan jika berkas teks tidak tersedia.
  4. w+: write+, mode ini dapat aku gunakan untuk membaca ataupun menuliskan isi dari sebuah berkas teks.
  5. a+: append+, mode ini dapat aku gunakan untuk membaca ataupun menambahkan isi dari sebuah berkas teks.

Lanjut ke kode berikutnya:

Overview: selain mengekspor data hasil crawling ke dalam csv, saya akan membuat dataframe pandas agar data yang didapat juga dapat ditampilkan di Python dengan rapi. Dengan tahapan yaitu, membuat list kosong > mengisi list > ubah list ke bentuk data dictionary > ubah ke dataframe pandas

Oleh karena itu, saya akan membuat list kosong yang nantinya akan diisi dengan data yang telah kita dapat. Data yang akan kita dapat nantinya berupa “created_at” yang menunjukkan tanggal postingan tersebut dipublish, “tweet_id” yang menunjukkan id twitter yang mempublikasikan postingan tersebut, “user.name” yang menunjukkan username yang mempublikasikan postingan tersebut, dan “text” yang menunjukkan isi postingan tersebut. Maka, kita akan membuat 4 buah list kosong seperti berikut:

Kemudian, untuk melakukan crawling gunakan fungsi .Cursor() dari library tweepy dengan input yaitu

  1. “api.search”, variabel api telah kita definisikan sebelumnya;
  2. “q” yaitu apa yang akan kita cari, didefinisikan pada variabel search_key;
  3. “lang” yaitu language/bahasa, saya isi dengan “id” indonesia;
  4. “since” dan “until” yang menunjukkan rentang tanggal yang akan kita ambil datanya. Dalam hal ini, saya ingin mengambil data dari awal tahun 2021 hingga sekarang (30 Juni 2021).

Lalu, fungsi .Cursor() kita chaining-kan dengan fungsi .items() yang kemudian kita buat sebagai perulangan agar setiap baris data yang kita dapat, mengisi list kosong yang telah kita buat. Kode yang digunakan seperti berikut:

Seperti yang telah dijelaskan di atas, data yang kita dapat tersimpan pada variabel-variabel tweet.created_at, tweet.id, tweet.user.name, dan tweet.text. Data ini akan dimasukkan ke dalam list dengan fungsi .append(). Misal: “created.append(tweet.created_at)” maka pada list created akan ditambahkan data dari tweet.created_at. Dengan begitu, kita telah mendapatkan list yang telah berisi data hasil crawling.

Kemudian, perhatikan kode berikut:

tweets = [tweet.created_at, tweet.id, tweet.user.name,     tweet.text.encode("utf-8")]
csvWriter.writerow(tweets)

kode tersebut akan memasukkan data hasil crawling, ke dalam list dengan nama “tweets” yang kemudian akan diisikan kedalam file csv dengan fungsi .writerow(), fungsi ini akan mengisi berkas teks secara baris per baris.

Dari kode perulangan di atas, kita telah mendapat kan list yang berisi data hasil crawling yaitu list “created”, “id”, “user”, dan “teks”. Kemudian kita akan mengubahnya ke dalam bentuk data dictionary dengan kode seperti berikut:

Kita tahu bahwa untuk membuat data dictionary digunakan { } (kurung kurawal). Lalu, kode dengan warna merah sebagai nama kolom, dan yang berwarna hitam merupakan data dari kolom tersebut yaitu list yang telah kita buat sebelumnya.

Setelah kita berhasil membuat data dictionary, kita akan mengubahnya ke dalam dataframe pandas agar lebih rapi dengan fungsi .DataFrame() dari library pandas yang telah kita aliaskan sebagai “pd”. Berikut kode yang digunakan:

Dengan begitu, dataframe pandas telah berhasil dibuat dan akan kita tampilkan hasilnya.

Sebelum itu, agar lebih jelas tentang kodingan untuk crawling data dari Twitter, berikut saya lampirkan kodingan lengkapnya.

Dari kodingan tersebut akan dihasilkan output seperti berikut:

Sedangkan, untuk data hasil crawling, berada pada direktori “C:/ Users/User/#horror.csv”. Berikut hasil crawling data dalam bentuk csv:

Mohon maaf bila dalam menjelaskan, masih terdapat kekurangan, kesalahan, ataupun masih kurang jelas.

--

--

Muchamad Nur Kholis
Muchamad Nur Kholis

Written by Muchamad Nur Kholis

Statistician and Data Scientist in Islamic University of Indonesia. LinkedIn Profile: linkedin.com/in/muchammad-nur-kholis-6844161ba

No responses yet