Share

Quay lại
Trang chủ / Kiến thức / Phát triển offshore / Crawl dữ liệu từ hàng triệu bài viết trên instagram không bị giới hạn

Crawl dữ liệu từ hàng triệu bài viết trên instagram không bị giới hạn

15/12/2023
01/12/2021
Crawl dữ liệu từ hàng triệu bài viết trên instagram không bị giới hạn

Crawl dữ liệu (data) là gì? Đây là hoạt động thu thập dữ liệu từ một trang web bất kỳ, sau đó phân tích, đọc dữ liệu và lọc ra những thông tin được yêu cầu. Đây là hoạt động không mấy xa lạ với người làm marketing, kinh doanh. Tuy nhiên, bài viết này sẽ mang tới “bí kíp” mới là cách Crawl dữ liệu số lượng lớn mà không bị giới hạn từ trang mạng xã hội nổi tiếng Instagram. 

Đặt vấn đề

Trong thời đại công nghệ 4.0 và dịch bệnh Covid, mạng xã hội phát triển nhanh chóng với vai trò như công cụ liên lạc và kết nối con người với xã hội. Thêm vào đó, mạng xã hội còn được sử dụng như một kênh kinh doanh chính, mang lại hàng tỷ lợi nhuận cho hàng triệu cá nhân và doanh nghiệp. 

Đối với khách hàng, những đánh giá khách quan về sản phẩm/dịch vụ từ người dùng trước là yếu tố ảnh hưởng mạnh mẽ tới quyết định mua hàng của họ. Vậy nên đối với người kinh doanh, việc thu thập, tổng hợp và trưng bày tất cả những review tốt về sản phẩm là một hoạt động quan trọng.

Crawl data từ hàng triệu bài viết trên Instagram

Bài toán đặt ra là làm thế nào để có thể tổng hợp hàng triệu bài viết đánh giá của người dùng về bạn trong thời gian ngắn nhất và ít tốn công sức nhất?

Bài viết này sẽ giúp chúng ta giải quyết bài toán nêu trên. Trong phạm vi bài này, mình sẽ trình bày cách crawl data nội dung bài viết đối với mạng xã hội Instagram, cùng tiếp tục tìm hiểu nào!

Một số phương pháp để crawl dữ liệu mọi người thường dùng

Đây có thể là 2 phương pháp mà Marketer, chủ doanh nghiệp hoặc lập trình viên của bạn đang sử dụng.

Cách đầu tiên: Sử dụng một endpoint API để lấy thông tin của một bài đăng hình ảnh hoặc video.

 Một bài viết trên Instagram thông thường sẽ có đường dẫn dạng như sau:

https://www.instagram.com/p/{post_id}/

VD: https://www.instagram.com/p/CVLYkRcpSoC/

Đối với phương pháp này, đơn giản ta chỉ cần thêm tham số ?__a=1 vào đằng sau link của bài viết, khi đó đường link sẽ có dạng sau:

https://www.instagram.com/p/{post_id}/?__a=1

VD: https://www.instagram.com/p/CVLYkRcpSoC/?__a=1

Khi gửi yêu cầu đến link trên, endpoint sẽ trả về dữ liệu kiểu json, trong đó bao gồm các thông tin như trong hình sau:

Hình 1: Crawl dữ liệu sử dụng endpoint ?__a=1

 

Trong dữ liệu trả về sẽ bao gồm các ảnh với các kích thước khác nhau, chúng ta có thể sử dụng kích thước phù hợp với mong muốn của mình.

Cách thứ hai: Sử dụng endpoint API do instagram cung cấp

Instagram cung cấp 1 Api giúp ta có thể lấy chi tiết nội dung của 1 bài viết sử dụng đường dẫn sau: https://api.instagram.com/oembed

Để crawl chi tiết nội dung một bài viết bất kỳ, ta truyền thêm url của bài viết đó làm tham số cho api, định dạng như sau: https://api.instagram.com/oembed?url=your_url

VD: Ta có bài viết có đường link như sau, https://www.instagram.com/p/fA9uwTtkSN/ muốn crawl nội dung của bài viết này, ta chỉ việc gọi đến api sau:

https://api.instagram.com/oembed?url=https://www.instagram.com/p/fA9uwTtkSN/

Hình 2: Crawl dữ liệu sử dụng tính năng embed

 Dữ liệu trả về sau khi gọi đến Api trên sẽ bao gồm trường thumbnail_url, ta có thể hiển thị chúng ở bất kỳ đâu ta mong muốn. 

Trên đây là 2 phương pháp giúp chúng ta có thể crawl ảnh của Instagram và nhúng tùy ý vào website của mình. Tuy nhiên, quay lại bài toán trước đó. Nếu phải crawl vài triệu bài viết một ngày thì 2 cách trên có giải quyết được vấn đề hay không? Hạn chế của các phương pháp trên là gì và có phương pháp nào hiệu quả hơn không? Cùng tìm hiểu ở phần tiếp theo.

Hạn chế của các phương pháp crawl dữ liệu thông thường

Đối với cách thứ nhất sẽ có một số hạn chế sau đây:

  • Bắt buộc người dùng phải login vào Instagram mới có thể sử dụng được theo cách này.

  • Bị giới hạn số lần gọi api: đối với api này, hệ thống sẽ giới hạn chỉ cho gọi đến api tầm 2000 lần/ngày. Nếu gọi quá số lượng quy định, hệ thống sẽ trả về lỗi Rate limit và phải đợi sang ngày mới thì mới sử dụng api tiếp được

  • Api có thể được Instagram thay đổi bất kỳ lúc nào và dữ liệu được nhúng trên website sẽ bị ảnh hưởng.

Đối với phương pháp thứ hai, cũng sẽ có một số hạn chế nhất định:

  • Bị giới hạn số lần gọi api: cũng giống như cách thứ nhất, nếu sử dụng cách này chúng ta cũng không thể gọi quá số lượng mà nhà cung cấp instagram cung cấp.

  • Instagram hiện đã không còn hỗ trợ api này nên họ có thể bỏ api này bất kỳ lúc nào.

Như vậy, với những hạn chế vừa liệt kê bên trên, việc crawl hàng triệu bài viết mỗi ngày là điều không thể. Để giải quyết được bài toán đã nêu, chúng ta cùng nghiên cứu cách thứ 3 và cũng là nội dung chính tôi muốn trình bày trong bài này. Cách sử dụng tính năng Instagram Oembed để lấy siêu dữ liệu cơ bản và html nhúng của một bài viết. 

Sử dụng tính năng Instagram oEmbed để crawl dữ liệu bài viết trên Instagram. 

Trước tiên, ta cần hiểu Instagram oEmbed là một tính năng do nhà phát triển Facebook cung cấp. Nhiệm vụ của nó là lấy siêu dữ liệu cơ bản và html nhúng của một bài viết trên Instagram. Nhờ vậy, chúng ta có thể hiển thị bài viết đó trong một trang web hoặc ứng dụng khác.

Yêu cầu của tính năng này

  • Một tài khoản nhà phát triển trên Facebook

  • Một ứng dụng Facebook ở chế độ chính thức

  • Một mã truy cập

  • Xét duyệt ứng dụng cho tính năng oEmbed

Chi tiết hướng dẫn

Về chi tiết cách xét duyệt ứng dụng cho tính năng oEmbed, ở hướng dẫn chính thức của Facebook đã nói rất cụ thể, mọi người có thể truy cập vào đường dẫn này để xem chi tiết 

Một số lưu ý

Có một lưu ý ở đây, mã truy cập sẽ bao gồm 2 loại mã là mã truy cập máy khách và mã truy cập ứng dụng. Mã truy cập máy khách sẽ bị giới hạn số lần gọi api trong khoảng vài nghìn lần, nhưng mã truy cập ứng dụng có thể tạo tối đa 5 triệu yêu cầu mỗi ngày. Để giải quyết crawl data hàng triệu bài viết mỗi ngày ta phải sử dụng mã truy cập ứng dụng, phần lấy mã truy cập ứng dụng cũng đã được bao gồm trong link phía trên.

Sau khi hoàn thành các bước theo link đã đính kèm thì việc crawl hàng triệu bài viết hàng ngày từ instagram thực ra lại trở nên cực kỳ đơn giản.

Kết bài

Như vậy qua bài viết này mình cũng đã trình bày cách crawl dữ liệu từ hàng triệu bài viết trên Instagram cực kỳ đơn giản và hiệu quả. Hy vọng giải pháp này đã giúp mọi người tiết kiệm thời gian và kinh doanh hiệu quả hơn. Hẹn mọi người ở các bài viết tiếp theo.

Rabiloo blog là kênh thông tin chia sẻ kiến thức và kinh nghiệm của nhóm lập trình viên trên 5 năm kinh nghiệm phát triển phần mềm. Nếu bạn quan tâm tới chủ đề công nghệ, chuyển đổi số, website, ứng dụng, trí tuệ nhân tạo, VR/AR,... hãy truy cập vào kênh tri thức của chúng tôi. 

Share


Cập nhật bài viết mới nhất từ chuyên gia

Không được để trống
Không được để trống
Không được để trống
Không được để trống
Tìm kiếm
Tags
Website là gì? Khái niệm, cấu tạo, phân loại các Website hiện nay
24/11/2023
21/12/2023
Website là gì? Khái niệm, cấu tạo, phân loại các Website hiện nay

Gặp gỡ và lắng nghe

Không được để trống
Không được để trống
Không được để trống
Không được để trống