Facebook เป็นแหล่งข้อมูลสาธารณะที่น่าจะใหญ่ที่สุดอันดับต้นๆของโลกยุคนี้ เรากำลังพูดถึง posts, comments, likes, shares ที่ users ไปเขียนและ interact กับ public pages ต่างๆ
ถ้าเราดึงข้อมูลเหล่านั้นมาใช้ได้น่าจะมีประโยชน์มากทีเดียว โดยเฉพาะด้านการตลาดดิจิตอล ถ้าแบรนด์เข้าใจว่าคนกำลังพูดอะไรเกี่ยวกับสินค้าและบริการของเราบ้างน่าจะดีไม่ใช่น้อย!
สำหรับเพื่อนๆที่อยากดึงข้อมูล facebook page มาวิเคราะห์เล่นๆ? (posts, likes, shares) วันนี้เราจะสอนทำเองง่ายๆ ด้วย Graph API และ package Rfacebook
ของ Pablo Barbera
Intro to Facebook Graph API

ก่อนที่เราจะดึงข้อมูลจาก facebook platform ได้ เราต้องขออนุญาตจากพี่มาร์คก่อนด้วยการขอ access token
ซึ่งตัว token จะมีสองแบบคือแบบชั่วคราวใช้ได้ประมาณสองชั่วโมง (short-term token) และแบบใช้ได้ระยะยาวประมาณ 60 วัน (long-term token)
การขอ long-term token จะค่อนข้างยุ่งยากนิดนึง ด้วยเหตุผลด้านความปลอดภัย วันนี้เราจะสอนขอ token แบบชั่วคราวมาทดลองดึงข้อมูลเพจ ง่ายๆแค่สามขั้นตอน
- เข้าไปที่เว็บ https://developers.facebook.com/tools/explorer เพื่อขอ access token แบบชั่วคราว กดล๊อกอินด้วย facebook account ของเรา
- คลิ๊กที่ปุ่ม
Get Token
→Get User Access Token
- คลิ๊กที่ปุ่ม
- เปิดโปรแกรม R แล้วใช้ access token ที่ได้รับมาดึงข้อมูล public page ที่เราต้องการ
- วิเคราะห์ข้อมูลง่ายๆ เช่น การหา top 10 posts ที่ได้แชร์เยอะที่สุด
สำหรับเพื่อนๆที่ยังไม่มี R สามารถดาวน์โหลดได้ฟรีจากเว็บ CRAN นี้เลย ลงเสร็จแล้ว copy code ได้ล่างไปลองเล่นใน console ได้เลยฮะ
[Optional] เพื่อความเข้าใจอย่างถ่องแท้ เพื่อนๆสามารถอ่านเพิ่มเติมเรื่อง access token และ Graph API Explorer ของ facebook ได้ที่นี่เลย
Four Lines of Code
แทนที่ token ของเราตรง "AAAAABBBBBCCCCC"
และเปลี่ยน PAGE_NAME
ในฟังชั่น getPage( ) เป็นชื่อ facebook page ที่เราต้องการ เช่น Google, Apple, MSFTTH (Microsoft Thailand)
n=500 ใน getPage( ) ระบุจำนวน posts ที่เราอยากจะดึงออกมา สามารถเปลี่ยนได้ ลอง test ซัก 100 posts ล่าสุดก่อนก็ได้ เรายังสามารถระบุเวลา timeframe ในการดึงข้อมูลได้ด้วย argument since
และ until
ลองอ่านวิธีการใช้งานฟังชั่น getPage( ) แบบละเอียดได้ที่นี่
# install package Rfacebook
install.packages("Rfacebook")
# load library
library(Rfacebook)
# token you get from https://developers.facebook.com/tools/explorer
token <- "AAAAABBBBBCCCCC"
# replace "PAGE_NAME" with FB page you want to scrape
page <- getPage("PAGE_NAME", token, n=500)
เขียนโค้ดแค่ 4 ไลน์ก็สามารถดึงโพสต์จาก public page ทั่วโลกได้แล้ว! เดี๋ยวแอดจะลองดึงข้อมูลจากเพจ DataRockie ของเราออกมา 500 โพสต์เพื่อทำ data analysis ง่ายๆในหัวข้อถัดไป
Basic Data Analysis

โอเค! ตอนนี้เราได้ 500 posts ของเพจ DataRockie ออกมาแล้ว เดี๋ยวเราจะมาลอง transform data ง่ายๆด้วย package dplyr
เพื่อหาว่า top 10 โพสต์ที่ได้ยอดแชร์เยอะที่สุดของเพจเราคือโพสต์อะไรบ้าง?
# load dplyr and change page df to tibble
library(dplyr)
page <- as.tbl(page)
# get top 10 most shared posts
top10share <- page %>% select(message, created_time, likes_count,
comments_count, shares_count) %>%
arrange(-shares_count) %>%
head(10)
เสร็จแล้ว ลอง print(top10share)
ใน console เพื่อดูโพสต์ที่ได้แชร์เยอะสุดของเพจ DataRockie 10 อันดับแรก โดย post ที่ได้ยอดแชร์เยอะที่สุด 7520 แชร์คือโพสต์แจกฟรี e-book SPSS คือเหรี้ยรัยยย! (ดูโพสต์ต้นฉบับได้ที่นี่)
# A tibble: 10 x 5 message created_time likes_count comments_count shares_count 1 "แจกฟรี !! e-book SPSS คือเหรี้ยรัยยย\n~ 2017-09-08T~ 4412 492 7520 2 "แจกฟรี e-book สอนใช้งาน Excel แบบคูลๆ ~ 2017-05-18T~ 2522 182 3751 3 "p-value ถูกแบน !! ก้าวเล็กๆของนิตยสารง~ 2017-01-23T~ 2718 142 2271 4 "ใครที่เคยเรียนสถิติผ่านๆมาบ้าง ต้องเคย~ 2016-10-19T~ 3201 72.0 1728 5 "เฮลโหลลลลลล ตอนใหม่มาแล้วทู๊กโคนน\n\nเ~ 2016-06-17T~ 1211 46.0 1430 6 "เฮลโหลลลล สวัสดีเพื่อนๆทุกคน ที่รอโพสต~ 2016-06-24T~ 865 41.0 1075 7 "รู้หมือไร่ #โปรดอ่าน\n.\nEinstein เคยบ~ 2016-10-17T~ 1272 121 1056 8 "\"เรียนรู้เพื่อความชำนาญ ไม่ใช่เพื่อคะ~ 2016-10-23T~ 610 17.0 1006 9 "แชร์เก็บรัวๆ! เรียนฟรีกับรองศาสตราจารย~ 2018-04-12T~ 542 17.0 833 10 "ทำยังไงสมองถึงจะฉลาดกว่านี้?\nบทความวั~ 2017-10-28T~ 1109 22.0 787
Show Me Data
“เหนือสิ่งอื่นใด จงแสดงข้อมูล (ด้วย visualization)” กล่าวโดยตำนานของสาย visual analytics อย่าง Edward Tufte

เราสามารถทำ data analysis ได้อีกเยอะเลยกับข้อมูลชุดนี้ เช่น การหาความสัมพันธ์ระหว่าง likes_count
กับ shares_count
ด้วย correlation หรือจะลองทำ scatter plot ด้วย package ggplot2
ตามโค้ดตัวอย่างด้านล่าง
# load ggplot2
library(ggplot2)
# make scatter plot
ggplot(page, aes(likes_count, shares_count)) +
geom_point() +
geom_smooth()
จาก plot จะเห็นว่าโพสต์ของเพจ DataRockie ส่วนใหญ่จะกระจุกตัวอยู่ต่ำกว่า 500 likes (เส้าจัยยยย) แต่บางโพสต์ที่ปังๆอย่าง e-book SPSS, e-book Excel, p-value ก็ได้ยอด likes + shares ดีมากเลย
Key Learnings
- ขอ access token จาก facebook Graph API Explorer
- ใช้ Rfacebook getPage( ) ในการดึงข้อมูล public page ที่เราต้องการ
- วิเคราะห์ข้อมูลง่ายๆด้วย dplyr และ ggplot2
- page จะอยู่รอดต้องทำ content ดีๆออกมาให้แฟนเพจอ่านอย่างต่อเนื่อง
- จากประสบการณ์ของเพจเรา การเขียนและแจก e-book ฟรีภาษาไทย ได้ผลตอบรับดีเสมอ 555+
เท่านี้ เป็นอันจบ !! Analyze Facebook Page ง่ายอะไรเบอร์นี้ ถ้าเห็นว่าบทความนี้เป็นประโยชน์ อย่าลืมกด like กด share ให้เพื่อนได้อ่านด้วยนะคร้าบ #กราบบบ
อ่านวิธีการใช้งาน Rfacebook
ได้เพิ่มเติมที่นี่ โดย Pablo Barbera
https://github.com/pablobarbera/Rfacebook
Leave a Reply