Team
Abdul
Ghoni Abbasi (5C414919)
Aldi
Ginanjar Ardiansah (50414741)
M.
Fadlan Prayoga (56414918)
Widya
Maylani (5C414218)
Scraping
Web
Scraping adalah pengambilan sebuah dokumen semi-struktur dari internet, umumnya
berupa halaman-halaman web dalam bahasa markup seperti HTML atau XHTML, dan
menganalisis untuk diambil data tertentu dari halaman tersebut
import
requests
graph_api_version
= 'v2.9'
# paste
your access token below
access_token
= 'EAAanvSwEfswBAG4xDMDJuJqmsPb179nvHy0XPMR7BcgPejGKBhaa7Iy0EaQu2W5PCOA92BcgiZA9nXJCJrFZBzKksVGwMCQHX7oq7lAXsn4YZBObZAZCI9kKa04m0eMsOpNoeZAwveKaZBu2cKQDUfycIM8zjbor0tbSplAABUlwQZDZD'
user_id
= '164305410295882'
post_id
= '1727321057327635'
url = 'https://graph.facebook.com/{}/{}_{}/comments'.format(graph_api_version,
user_id, post_id)
comments
= []
r =
requests.get(url, params={'access_token': access_token})
while True:
data = r.json()
if 'error' in data:
raise Exception(data['error']['message'])
for comment in data['data']:
text = comment['message'].replace('\n',
' ')
comments.append(text)
print('got {} comments'.format(len(data['data'])))
if 'paging' in data and 'next' in data['paging']:
r = requests.get(data['paging']['next'])
else:
break
#menyimpan
komentar ke dalam suatu file
with open('comments.txt',
'w', encoding='utf-8') as f:
for comment in comments:
f.write(comment + '\n')
import
library requests agar mendapatkan akses token dari facebook, kemudian
memasukkan access token yang terdapat pada facebook. Berikutnya untuk mengambil
semua data komentar pada suatu post facebook yang dibutuhkan adalah id dari
user facebook dan id dari post yang ditentukan dalam variabel url nya. Setelah
itu bisa di ketahui konsep scraping untuk mengambil semua komentar di dalam
suatu post tersebut membuat array dengan nama comments and menggunakan library
requests untuk mendapatkan akses token, untuk dibuat scraping atau data
komentar dari suatu post dibuat kondisi terdapat error dalam data JSON tersebut
maka ditampilkan pesan error, jika tidak maka dimuat isi array dengan banyak
nya komentar menggunakan perintah
for
comment in data['data']:
text = comment['message'].replace('\n', ' ')
comments.append(text)
Jika
sudah simpan file python dengan nama scraping.py lalu run program
yang sudah dibuat dengan perintah python3 scraping.py maka akan
ditampilkan output
Kemudian
untuk data comment yang sudah di extract disimpan dalam file bernama comments.txt dan
output yang dhasilkan dari script python diatas berupa:
Sebelum
melakukan sentimen analisis, import library seperti NLTK, pandas
import nltk
import
pandas as pd
import
string
Library
yang digunakan yaitu vader lexicon untuk pemanggilan fungsi SentimentIntensityAnalyzer()
from
nltk.sentiment.vader import SentimentIntensityAnalyzer
sid =
SentimentIntensityAnalyzer()
Print Positive, Negative and Neutral
summary
= {"positive":0,"neutral":0,"negative":0}
for x in
messages:
ss = sid.polarity_scores(x)
if ss["compound"] == 0.0:
summary["neutral"] +=1
elif ss["compound"] > 0.0:
summary["positive"] +=1
else:
summary["negative"] +=1
print(summary)
untuk
penentuan suatu komentar termasuk komentar positif dibuat kondisi jika nilai
variabel ss yang merupakan perhitungan pada library SentimentIntensityAnalyzer() sama
dengan 0 maa akan masuk ke dalam indeks “neutral” akan bertambah 1, untuk nilai
lebih dari sama dengan maka akan masuk ke dalam indeks “positive” dan untuk
nilai komentar yang negatif jika nilai nya kurang dari 0 maka indeks array
“negative” akan bertambah. Untuk mencetak perolehan angka sentimen gunakan
perintah print(summary)
{'positive':
57, 'neutral': 81, 'negative': 55}
Result from Pie Chart
import
matplotlib.pyplot as plt
pie_plot
= pd.Series(summary,name='')
pie_plot.plot.pie(fontsize=11,figsize=(6,6),autopct='%.2f');
Kemudian
untuk memvisualisasikan data sentimen nya,gunakan library matplotlib dan
dipanggil perintah untuk menyajikan data chart dengan jenis pie sehingga data
yang ditampilkan dengan menampilkan dictionary summary dan menampilkan angka
persentasi 2 angka dibelakang koma dengan perintah autopct=%2.f maka
outputnya adalah