Người ta trích xuất dữ liệu từ Facebook (ví dụ: đếm post có hashtag) như thế nào?
Duy Luân
một năm trướcBình luận: 152Lượt xem: 65.863
Người ta trích xuất dữ liệu từ Facebook  (ví dụ: đếm post có hashtag) như thế nào?
Bữa giờ trên Facebook thấy có quà chừng người đặt câu hỏi xoay quanh việc làm sao có thể đếm được hết số bài cũng như trích xuất được hết mọi post có gắn một hashtag nhất định. Thực ra việc này không quá khó, nhiều công ty về truyền thông ở Việt Nam đã làm nhiều năm nay để thu thập thông tin và đo mức độ ảnh hưởng cho các chương trình marketing / quảng cáo. Một số công ty khác thì bán giải pháp trích xuất thông tin từ Facebook với đa dạng các nội dung có thể lấy được.

Về cơ bản, để làm chuyện này có 2 cách:

Cách 1: sử dụng API do Facebook cung cấp. Đây là cách chính đạo, được Facebook hỗ trợ một cách chính thức và bạn có thể xem đầy đủ tại địa chỉ developers.facebook.com/docs/graph-api/. Với mỗi API (thực chất chỉ là một đường link, như trong ảnh bên dưới bạn thấy đoạn graph.facebook.com/v3.2/me?fields=... chính là API đấy), Facebook sẽ trả về data được yêu cầu, ví dụ như bên dưới là mẫu data lấy thông tin cá nhân của tài khoản mình. Dữ liệu được trả về theo định dạng JSON, và khi có chuỗi JSON này mình có thể lấy được tên, ngày tháng năm sinh, sở thích... (nếu bạn có cấp quyền cho app). Thông tin sau đó được lưu trữ vào một số cơ sở dữ liệu để dùng về sau mà không cần đi trích xuất lại.

json_profile.jpg

Ngày xưa từ năm 2017 trở về trước thì việc lấy dữ liệu qua API rất dễ thở, lấy được rất nhiều thông tin và không chỉ lấy từ fanpage, group mà còn lấy được từ cả trang cá nhân và các post của bạn bè mà cá nhân đó có kết bạn. Điều đó khiến việc trích xuất dữ liệu trở nên cực kì dễ dàng.

Tuy nhiên, kể từ sau khi scandal Cambridge Analytics nổ ra, Facebook đã siết rất chặt việc trích dữ liệu từ API. Kể từ ngày 1/4/2018, Facebook siết chặt lại về quyền, về thông tin trả về khi sử dụng API cũng như cấm hẳn một số API, ví dụ như API sẽ chỉ thấy được post của chính người dùng đang đăng nhập, không thể thấy post của những bạn bè có comment lên post chẳng hạn.

Quay trở lại vụ hashtag, Facebook lúc trước có cung cấp việc truy xuất dữ liệu public có hashtag nào đó, tuy nhiên họ buộc bên muốn lấy dữ liệu phải là một nhà xuất bản, một trang tin tức nào đó thì mới cho lấy. Chưa rõ bây giờ API hashtag có còn chạy không, nhưng mình biết một số công ty ở Việt Nam có tài khoản dạng publisher này và họ có thể dễ dàng track được các thông tin được hashtag.

Cách 2: sử dụng phương thức crawling hoặc scrapping. Kĩ thuật này sẽ dùng các con "bot" hoặc còn được gọi là "crawler" đi đọc mã nguồn trang web rồ trích thông tin từ các thẻ HTML. Nói đâu xa, Google là công ty dùng crawling mạnh nhất, họ crawl và lưu trữ thông tin của cả thế giới còn được cơ mà. Thì giờ chúng ta dùng kĩ thuật tương tự để lấy dữ liệu trên Facebook mà thôi. Cái gì mà hiện ra web được thì sẽ scrap được hết.

Từng thẻ HTML có các id và tag nhất định, con crawler sẽ sử dụng các tag này để xác định đúng vị trí cần lấy dữ liệu. Ví dụ bên dưới là đoạn HTML của trang public với hashtag #ngayhoihoahuongduong2018, mình có thể nhanh chóng xác định được những tấm ảnh được đăng tải, tìm tên tác giả, link tới Facebook của tác giả và cả nội dung câu chữ caption.

scrapping_facebook.jpg

Cũng trong trang này có nút See more, tức là tải thêm những nội dung public khác. Nếu mình đủ siêng ngồi bấm nút See more này vài trăm (hoặc vài nghìn lần), mình có thể xem được hết mọi post có hashtag #ngayhoihoahuongduong2018. Tất nhiên khi viết thành script tự động thì máy sẽ giả lập thao tác click này cho mình nên tốc độ rất nhanh. Cứ click, trích xuất dữ liệu, lưu xuống database, rồi sau đó lại tiếp tục làm như vậy cho đến khi không còn nút See more nữa là kết thúc. Lúc này chỉ việc đếm các kết quả đã lưu là ra được tổng số post có hashtag, đơn giản như đang giỡn.

Việc viết một con crawler không phải chuyện khó, gần như mọi lập trình viên đều có thể làm được. Tất nhiên để crawl số lượng lớn và crawl nhiều trang khác nhau thì sẽ cần mọi số kĩ thuật và thiết kế đặc biệt nhưng nguyên lý cơ bản là không khác nhau. Cứ lấy HTML moi ra thông tin cần thiết là được. Kể cả web bắt login mới cho xài thì crawler cũng xử được luôn.

Bản thân Tinh tế cũng đang dùng một tool lấy dữ liệu, tool này do các em gái dễ thương của team Data viết ra chứ không đi mua tool. Script này trích xuất dữ liệu từ Facebook để quay random cho các game chơi trên fanpage hoặc group Tinh tế. Chỉ có cách này bọn mình mới lấy được hết comment của anh em trong những post tặng quà vốn có thể lên tới vài nghìn comment. Tất nhiên bọn mình không cần lưu lại các thông tin cá nhân của anh em làm gì cả, chỉ lấy dữ liệu comment nhằm kiểm tra xem hợp lệ hay không (nếu game có yêu cầu comment số ngẫu nhiên) và lấy link tới comment để thông báo trúng giải cho anh em sau khi quay random xong mà thôi.

get_comment.jpg
Một đoạn trong script lấy dữ liệu comment trên fanpage / group Tinh tế, lấy được link tới comment, thời gian comment, nội dung, loại comment...​

Ở quy mô nhỏ thì có thể dùng được cách crawl trực tiếp từ các link cụ thể kiểu hashtag, nhưng ở quy mô lớn hơn thì các công ty lắng nghe mạng xã hội sẽ không dùng như vậy vì không đủ data, thay vào đó họ crawl hết sạch sẽ toàn bộ post Facebook để ở trạng thái public và một số posst ở chế độ Friend only của toàn Việt Nam (hoặc thêm vài nước nữa, tùy mục tiêu cần đạt được là gì). Cái này cần sức mạnh khủng khiếp, mình chưa làm nổi nhưng đã từng được thấy một công ty làm (khá nhạy cảm nên không nêu tên).

Họ có thể quét được vài chục triệu hay thậm chí vài trăm triệu post một ngày của một tập rất lớn người dùng ở Việt Nam, nhờ vậy họ mới biết được ý kiến phản hồi của khách hàng về một chiến dịch này đó, thái độ của người dùng Facebooi với một vấn đề xã hội mới diễn ra... Cách trích xuất thông tin vẫn là crawl và lấy tag HTML, có điều nó chạy ở quy mô lớn hơn là post News Feed và có nhiêu lấy nhiêu, sau đó chỉ việc scan các post có hashtag mong muốn là xong.

Về việc crawl sạch sẽ data cá nhân và các bài post (dù là có hashtag hay không) mình đã chia sẻ khá nhiều trong bài: Dữ liệu của bạn trên Facebook đang bị khai thác triệt để và bạn không có cách nào chạy trốn. Mời anh em xem để có cái nhìn cụ thể hơn.

Nói một cách khái quát hơn, bất kì thứ gì có thể truy cập được bằng web thì đều có thể crawl được. Các trang web so sánh giá, web tìm kiếm, các trang tổng hợp thông tin... cũng dùng cách này. Có điều việc tôn trọng quyền riêng tư phải phụ thuộc vào ý thức và đạo đức cũng như mục đích của lập trình viên. Ví dụ, bọn mình chỉ trích dữ liệu từ Group và Fanpage Tinh tế mà thôi, đây là hai "tài sản" của bọn mình rồi, và cũng không lưu lại thông tin cá nhân của anh em. Nhưng những công ty khác thì có thể, họ có thể lấy dữ liệu của bạn mà bạn không hề hay biết. Và rất nhiều công ty khảo sát thị trường, theo dõi trend... đang lưu dữ liệu của anh em mà (có thể) không được sự cho phép. Có điều để biết được chuyện này là cực kì khó.
Cảm ơn bạn đã chia sẻ!
@donquijote Lạy chúa..
Cảm ơn cuộc sống.
Đã lên net thì xác định là cừu non rồi
@nghequan Vậy đừng lên net nữa để làm dê già cho khoẻ nhỉ. 😆
@VicLuc Đồng ý
@mai12 Kâkkâkka làm cừu non kím cáo già mà mấy páccccc
@VicLuc Mình lên net làm...dê già có được không 😁
@nghequan Chả hiểu gì cả
Cho em hỏi là có cách nào xác định được hình đó là người ta vẽ hay không anh? Chứ em thấy mấy trăm nghìn cái hình thì bộ phận mar của công ty tổ chức chiến dịch vẽ hoa hướng dương đếm thủ công chắc hơi đuối
@Duy Luân hóng thuật toán rất đơn giản để lọc ảnh và vẽ của mod.
@thiên trần thanh Không cần gì họ phải lọc ảnh trùng hay tag bạn bè để làm gì cả 😁
Họ có trao tiền cho người post bài đó đâu mà cần phải giành mạch.
Họ chỉ cần 1 con số (thậm chí đúng hoặc không) để trao tiền từ thiện (trong khả năng của họ)
@thiên trần thanh Chi phí mkt đã được duyệt rồi. Ít hay nhiều hơn thì cũng là số tiền ấy thôi. Việc đó không quan trọng bằng việc họ tạo ra 1 nhận thức trong cộng đồng. Cũng hay. Nhiều brand làm mkt còn tốn hơn nhiều. 5 tỷ vẫn rẻ
Không thể đếm chính xác được hashtag, không thể đếm được post chứa hashtag của người không liên quan đến bạn. Chỉ tìm được khi tag đó được bạn của bạn post, like, comment thôi. Tôi có tạo 1 FB, post 1 hashtag, đố các ông tìm thấy. Bằng tay mà không được làm sao làm được bằng tool
https://www.facebook.com/profile.php?id=100030710923272&hc_location=ufi
@khuongduy26969 Qua nghe nói 310.000 bài đăng và có 6800 bài hợp lệ, bài hợp lệ là 30k, ko hợp lệ tính 15k, được 5.5 tỷ, đâu ra 40 tỷ vậy bạn ?
@Eolesfuil Lên tuổi trẻ đọc toàn bộ chtr, cái mấy thím thấy 5t là 1 phần nhỏ của chtr thôi. Có não nên vận động nha
@yupee Để Chế độ Công khai thì đếm được hết bạn nhé.
Thông tin chuyên môn quá.
Cảm ơn Mod đã chia sẻ.
Trên web đúng là hở ra thông tin nào là .. mất thông tin đó
ha ha
tạo bot bằng framework gì v anh Duy Luân
hiện nay phổ biến là scrapy và Selenium nhưng Facebook và một số trang web khác có hệ thống detection rất mạnh...các tool crawl data thường không sống lâu được...chưa kể là FB hình như mã hóa hết nội dung trên FB rồi có crawl về cũng ko đọc được

Rất mong anh chia sẻ thêm
@LuisYuri Cho em hỏi là hiện em đang quản lí một page nhỏ. Cần trích xuất dữ liệu như trên, cụ thể là đếm tổng số post chứa một hastag cho trước. Tổng cộng số kết quả không quá 3000 kết quả. Chỉ cần một con số thôi ạ. Không biết có đơn vị nào hay có freelancer nào nhận làm không ạ? Mọi người cho em xin contact với ạ. Chúng em là một đơn vị học sinh thôi ạ nên rất mong mn có thể cho em xin một contact giá rẻ. Em cảm ơn mọi người rất nhiều!
@hungbya Cho em hỏi là hiện em đang quản lí một page nhỏ. Cần trích xuất dữ liệu như trên, cụ thể là đếm tổng số post chứa một hastag cho trước. Tổng cộng số kết quả không quá 3000 kết quả. Chỉ cần một con số thôi ạ. Không biết có đơn vị nào hay có freelancer nào nhận làm không ạ? Mọi người cho em xin contact với ạ. Chúng em là một đơn vị học sinh thôi ạ nên rất mong mn có thể cho em xin một contact giá rẻ. Em cảm ơn mọi người rất nhiều!
@Duy Luân Cho em hỏi là hiện em đang quản lí một page nhỏ. Cần trích xuất dữ liệu như trên, cụ thể là đếm tổng số post chứa một hastag cho trước. Tổng cộng số kết quả không quá 3000 kết quả. Chỉ cần một con số thôi ạ. Không biết có đơn vị nào hay có freelancer nào nhận làm không ạ? Mọi người cho em xin contact với ạ. Chúng em là một đơn vị học sinh thôi ạ nên rất mong mn có thể cho em xin một contact giá rẻ. Em cảm ơn mọi người rất nhiều!
@Trang Shirley Mình thì không rành freelance 😁 mà chắc bạn tự viết được đó

Uả mà group hay page nó hay có mấy công cụ thông kê mà nhỉ? 🤔
"
và cũng không lưu lại thông tin cá nhân của anh em. Nhưng những công ty khác thì có thể, họ có thể lấy dữ liệu của bạn mà bạn không hề hay biết. Và rất nhiều công ty khảo sát thị trường, theo dõi trend... đang lưu dữ liệu của anh em mà (có thể) không được sự cho phép. Có điều để biết được chuyện này là cực kì khó.
"
Các công ty khác cũng hay nói như vậy : )))
@mrcuongth Thường thì ra toà thằng nào cũng nói mình vô tội, hehee
Thanks Luân 😁
Ko hiểu mấy thứ này, cơ mà mấy ngày qua bá tánh share vụ hoa hướng dương dữ quá 😁
| Sent from CRAZYSEXYCOOL1981 using BlackBerry Athena |
Việc TT có lưu lại thông tin của ae hay không thì "Có điều để biết được chuyện này là cực kì khó." 😁
@mrcuongth Mình cũng nghĩ thế
Rất hay.
mình cũng nghĩ là có tool chứ chẳng ai rãnh mà ngồi dò từng post 😆
Cá nhân tao thấy vụ #Hoa hướng dương gì đó là cái chương trình tào lao xí đú nhất từng gặp. Thằng nhà hảo tâm clg muốn ủng hộ thì phăn tiền ra mà ủng hộ. Bày đặt kêu gọi vẽ này nọ đăng lên hashtag này nọ mới tính ủng hộ. Đánh vào lòng thương hại thành chương trình Marketing riêng nó. Hãm đéll tả được.
@khuongduy26969 Nghe cái giọng điệu là biết trẻ ranh chưa ra xã hội bao giờ, chỉ biết facebook là giỏi. Đụng tới 1 chút nhảy dựng dựng lên chửi bới. Hiểu chú tới đâu rồi. Miễn nói tới nhau nữa
@sangvopd Chính vì cái thói a dua phong trào đấy mà tạo nên cái ác cảm thôi bạn.
@John Chris
@sangvopd KO nên cãi với thành phần ít xài não bạn!

Từ 1 người tham gia vẽ hoa, chạy bộ và ủng hộ tiền mặt vào chương trình!
Thuật toán và data thôi mà
Mình cãi nhau với mụ vợ đã share cái này là "làm sao công ty dược đó có thể thống kê được số post và quy ra tiền được?"
...
Đọc bài này xong đã thấy mình sai 😁
@dzlinh812 Vợ luôn đúng nhé. =))
Đọc cho biết thôi chứ không hiểu lắm
@phoden học IT đọc còn èo hiểu đây =]]
@23423423414124 sssss
  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2020 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019