Crawling Data Twitter Menggunakan Tweepy Python

bagas
BISA.AI
Published in
4 min readMar 30, 2020
source : https://statisquo.de/2018/08/10/twitter-mining-in-python-mit-tweepy-und-der-twitter-api/

Halo kawan-kawan, perkenalkan nama saya Bagas. Pada artikel pertama saya di Medium ini saya akan mencoba membuat tutorial bagaimana cara untuk mendapatkan data Twitter menggunakan library Python yang bernama Tweepy.

Tweepy adalah salah satu library Python yang mudah digunakan untuk mengakses API dari Twitter. Library Tweepy ini berfungsi untuk memudahkan kita mendapatkan data di Twitter atau yang lebih simpel nya mendapatkan data Tweet dari pengguna Twitter berdasarkan keyword yang akan kita gunakan. Jadi semisal contoh kita ingin mendapatkan Tweet tentang sebuah topik tertentu, kita jadikan topik itu menjadi sebuah keyword lalu Tweet yang mengandung keyword yang kita isi akan muncul

Langsung saja ke praktek, berikut ialah beberapa dependecy atau library yang kita butuhkan dalam menjalankan Tweepy:

  1. Jupyter Notebook dari Anaconda
  2. Tweepy ( pip install Tweepy pada Anaconda Prompt)

Setelah keperluan-keperluan di atas terpenuhi, sekarang kita bisa lanjut ke tahap berikutnya yaitu melakukan codingnya :D

Tahap Coding

1. Pertama kita jalankan Jupyter Notebook yang sudah kita download dengan mencari Jupyter Notebook di menu Program laptop/komputer kita, kita bisa mengecek apakah Jupyter Notebook kita sudah jalan atau belum dengan mengetik http://localhost:8888 di url browser kita

akan muncul tampilan seperti ini apabila si Jupyter Notebook sudah running

2. Berikutnya adalah kita membuat sebuah file Jupyter baru, untuk cara membuatnya kita bisa klik New lalu Python 3.

3. Setelah kita buat file Jupyter nya, kita import beberapa library yang dibutuhkan untuk Crawling. Untuk daftar librarynya bisa dilihat di kodingan yang ada di bawah:

import tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import time
import json

4. Langkah berikutnya adalah kita akan mendefinisikan variabel untuk kode akses token Twitter API yang mana nanti akan digunakan untuk melakukan Crawling data Twitternya. Untuk saat ini saya akan menampilkan kode nya saja, next tutorial saya akan memberi tahu bagaimana cara mendapatkan token Twitter API.

5. Selanjutnya kita membuat Class yang bernama StdoutListener, yang mana nantinya akan kita panggil saat melakukan Crawling data.

class StdoutListener(StreamListener):
def on_data(self,data):
try:
data = json.loads(data) # load data dalam format json
tweet = data['text'] # ambil entitas text (Tweet)
print(tweet) # tampilkan text(Tweet)
with open('tweet.csv', 'a', encoding='utf-8') as f:
saveFile = open('hasil.csv','a')
f.write(tweet)
f.write('\n')
f.close()
return True
except BaseException as e:
print('Failed'(e))

def on_error(self,status):
print(status)

Disini saya akan sedikit menjelaskan tentang kodingan diatas. Jadi diatas terdapat 2 fungsi di dalam class StdoutListener yaitu on_data dan on_error,

Fungsi on_data akan dieksekusi apabila Tweet dari keyword yang akan kita isi nanti berhasil didapatkan, nah disini saya melakukan pengolahan data yang dikirim dari API Twitter. Proses yang pertama saya lakukan adalah load data tersebut menjadi format JSON, karena format data yang dikirim oleh API Twitter juga adalah JSON

Berikutnya ialah kita mengambil Tweet/kata yang terkandung dalam data JSON tersebut dengan syntax diatas, lalu setelah itu kita menyimpan semua Tweet/kata yang didapatkan kedalam file berformat .csv yang bernama hasil.csv

6. Lalu langkah terakhirnya adalah kita memasukan kodingan yang akan kita jalankan nantinya untuk mengcrawling data dari API Twitter tersebut

#streaming
l = StdoutListener()
auth = OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
stream = Stream(auth,l)
stream.filter(track=['rabu'])

Nah untuk memasukan keywordnya teman-teman bisa mengubah di kodingan yang paling bawah yang ada kata rabu nya, teman-teman bisa pilih sendiri keyword yang digunakan sesuai dengan kebutuhan masing-masing. Dan juga kita bisa hanya menggunakan 1 atau lebih keyword, apabila kita ingin menggunakan dua atau lebih keyword bisa kita tambahkan yang nantinya akan menjadi seperti ini

stream.filter(track=['rabu','kamis'])

7. Langkah terakhir nya adalah kita menjalankan kodingan yang sudah kita buat. Ketika nanti API Twitter mendapatkan data Tweet berdasarkan Keyword yang kita isi, maka data Tweet tersebut akan diproses di fungsi on_data yang sudah kita lihat diatas.

Jadinya nanti setiap data Tweet yang dikirim oleh API Twitter, Tweet nya akan disimpan kedalam CSV yang bernama hasil.csv sesuai dengan nama file csv yang sudah kita definisikan diatas

Nah kalau digabungkan, kodingan kita akan terlihat seperti dibawah ini:

import tweepy
from tweepy.streaming import StreamListener
from tweepy import OAuthHandler
from tweepy import Stream
import time
import json
access_token = "<your access token>"
access_token_secret ="<your access token secret>"
consumer_key ="<your consumer token>"
consumer_secret="<your consumer token secret>"
class StdoutListener(StreamListener):
def on_data(self,data):
try:
data = json.loads(data)
tweet = data['text']
print(tweet)
with open('tweet.csv', 'a', encoding='utf-8') as f:
saveFile = open('gabung.csv','a')
f.write(tweet)
f.write('\n')
f.close()
return True
except BaseException as e:
print('Failed'(e))

def on_error(self,status):
print(status)
#streaming
l = StdoutListener()
auth = OAuthHandler(consumer_key,consumer_secret)
auth.set_access_token(access_token,access_token_secret)
stream = Stream(auth,l)
stream.filter(track=['rabu','kamis'])

Kesimpulan

Demikian cara untuk melakukan Crawling Data Twitter menggunakan Tweepy. Nah setelah kita udah dapet data Tweet nya kita bisa gunakan data Tweet tersebut untuk membangun Model Sentiment Analysis, atau untuk menganalisa respons masyarakat tentang suatu keyword yang kita pilih.

Cukup sekian dari saya pada artikel ini, mohon maaf apabila ada kekurangan. Apabila teman-teman ada pertanyaan mungkin bisa langsung ditanyakan di komentar. Sekian dan Terima Kasih :D

--

--