Blog นี้ดองไว้นานเหมือนกัน ขึ้นโครงไปเรื่อยๆ ค่อยเติมมาเกือบเดือน ถึงเสร็จครับ มาเขียน Blog เก็บไว้ เพราะผมงงครับ 55555 กับวิชา SNA ครับ ติดมาอยู่ 2 Week และก็ไม่มีเวลามาหาว่าผิดตรงไหน การบ้านท่วมตัวครับ เข้าเรื่องกันดีกว่าครับ
Table of Contents
สิ่งที่ต้องมี
- Python - ผมใช้ Python 3 ครับ
- Editor - ผมใช้ VSCode (จริงๆ ใช้ Jupyter ใน Anaconda ก็ได้นะครับ ครบครันดี)
- Internet - เอาไว้เก็บข้อมูลจาก Social
- Gephi - เอามา Visualize Data การติดตั้ง + แก้ปัญหามีใน Blog
เก็บข้อมูล
- ลองเล่น Graph API ของ Facebook กันก่อนครับ
- มัน Powerful มากเลยครับ สามารถลอง Query แบบต่างๆได้เลย
- หลังจากเล่นมาสักพักและ ลองกำหนดโจทย์กันดีกว่าครับ
- Code Python ที่เขียนครับ (อันนี้ปรับมาจาก Code ตัวอย่างของ อ สุกรีครับ Blog รายวิชา SNA)
import requests
import json
ACCESS_TOKEN = 'Your Token'
base_url = 'https://graph.facebook.com/v2.10/CH3Thailand'
#เปลี่ยน URL จาก ME ไปเป็น อย่างอื่นก็ได้ เช่น workpointTV
fields = 'posts{created_time,likes{name}}'
url = '%s?fields=%s&access_token=%s' % (base_url,fields,ACCESS_TOKEN)
content = requests.get(url).json()
list_of_like = []
list_of_feed = [f for f in content['posts']['data']]
try:
while True:
for f in list_of_feed:
print(f['created_time'])
if 'likes' in f:
list_of_like += [(ll['id'],f['id']) for ll in f['likes']['data']]
f_content = {}
f_content['paging'] = {'next':''}
if 'next' in f['likes']['paging']:
url = f['likes']['paging']['next']
else:
url = ''
while url != '':
print('Getting next likes of '+f['id'])
f_content = requests.get(url).json()
list_of_like += [(ll['id'],f['id']) for ll in f_content['data']]
if 'next' not in f_content['paging']:
url = ''
else:
url = f_content['paging']['next']
print(url)
if 'posts' in content:
if 'paging' not in content['posts'] or 'next' not in content['posts']['paging']:
break;
url = content['posts']['paging']['next']
elif 'data' in content:
#if 'next' not in content['paging']:
if len(content['data']) == 0 or 'next' not in content['paging']:
break
url = content['paging']['next']
print('Getting next feed')
content = requests.get(url).json()
list_of_feed = [f for f in content['data']]
except Exception as ex:
print(ex.message)
finally:
f=open('all_likes_CH3Thailand','w')
for t in list_of_like:
f.write(t[0]+','+t[1]+'\n')
f.close()- โดย Code ชุดนี้ มันเก็บข้อมูลเก็บ csv มี 2 Column นะครับ ที่ทำแบบนี้ เพราะ เอาไป Visualize Data ผ่านตัว Gephi
- อ๋อ และก็อย่าลืมเติมหัว Column เป็น Source กับ Target ตามรูปนะครับ

มาลอง Visualize กัน
- เปิด Gephi >> New Project โลดด

- เลือก Import Spreadsheet

- เอาไฟล์ที่ได้จากขั้นตอนที่แล้วมาใส่ครับ อย่าลืมดูว่าเป็น Edges Table ครับ

- มาที่ Overview Conifg ตามรูปเลยครับ โดยในครั้งนี้เลือกเอา Algorithm OpenOrd มา Visulize Data ครับ

- ผลลัพธ์ตอน Preview

Discover more from naiwaen@DebuggingSoft
Subscribe to get the latest posts sent to your email.



