2013-03-25 36 views
20

Tôi đang cố truy xuất các nhận xét và lượt thích cho các bài đăng cụ thể thông qua API hiển thị của Facebook. Trong khi tôi lấy lại một số thông tin, nó không phải lúc nào cũng phù hợp với nhận xét/lượt thích đếm được đề cập trong bài đăng. Tôi đoán điều này có thể được quy cho các quyền truy cập của mã thông báo tôi đang sử dụng. Tuy nhiên, tôi đã nhận thấy rằng các kết quả khác nhau tùy theo yêu cầu giới hạn Tôi sử dụng và đôi khi tôi cũng nhận được các mục trùng lặp giữa các yêu cầu.Cách truy xuất tất cả nhận xét/lượt thích qua Facebook OpenGraph

Ví dụ: bài đăng 10376464573_150423345118848 có khoảng 14.000 lượt thích như bài viết này, nhưng tôi chỉ có thể truy xuất tối đa khoảng 5000. Với giới hạn mặc định là 25, tôi có thể nhận tối đa 3021 lượt thích. Giá trị 100 cho 4501, trong khi giới hạn 1000, 2000, 3000 và 5000 đều trả về cùng số lượt thích, 4959 (giá trị tuyệt đối không có ý nghĩa quá nhiều, chúng chỉ ở đó để so sánh).

Tôi đã nhận thấy kết quả tương tự trên thang điểm nhỏ hơn cho nhận xét.

Tôi đang sử dụng a simple python script để tìm nạp trang. Nó đi qua các dữ liệu theo các liên kết phân trang được cung cấp bởi Facebook, viết mỗi trang được truy xuất đến một tệp riêng biệt. Sau khi trả lời trống, nó sẽ dừng lại.

Với các giới hạn nhỏ (ví dụ: mặc định là 25), tôi nhận thấy rằng số lượng kết quả được trả về là giảm một cách đơn điệu khi tôi đi qua các liên kết phân trang, có vẻ rất kỳ quặc.

Bất kỳ suy nghĩ nào về những gì có thể gây ra hành vi này và cách khắc phục nó?

+0

Tôi nghĩ rằng có giới hạn bởi 5000 đối tượng. [5000 bài viết API Hạn chế của Facebook] [1] [Phá vỡ giới hạn 5000 đối tượng trong Facebook API] [2] [1]: http://stackoverflow.com/questions/10422186/facebooks-5000-post-api-limit [2]: http://stackoverflow.com/questions/3452018/breaking-the-5000-object-limit-in-facebook-api –

+0

Không có giới hạn 5000, bạn có thể dễ dàng lấy lại tất cả các lượt thích (hiện tại là 20.000) cho bài đăng Lady Gaga đó –

Trả lời

1

Nếu bạn đang tìm kiếm danh sách tên và/nhận xét trên mỗi bài đăng cụ thể, tôi nghĩ bạn sẽ chạy ngược lại giới hạn API (ngay cả với phân trang).

Nếu bạn chỉ đang tìm kiếm tổng số lượt thích, nhận xét, lượt chia sẻ hoặc nhấp chuột liên kết, bạn sẽ chỉ cần sử dụng thông tin tóm tắt = true param được cung cấp trong điểm cuối bài đăng. Loại như thế này:

try: 
    endpoint = 'https://graph.facebook.com/v2.5/'+postid+'/comments?summary=true&access_token='+apikey 
    response = requests.get(endpoint) 
    fb_data = response.json() 
    return fb_data 

Bạn cũng có thể lấy tất cả các bài viết của bất kỳ trang nói riêng và tóm tắt các điểm dữ liệu của họ:

{page_id}/posts?fields=message,likes.limit(1).summary(true) 
1

Bạn có thể lấy ý kiến ​​và như đếm hoặc các thông tin khác của một đặc biệt đăng bằng url hoặc api bên dưới.

https://graph.facebook.com/{0}/comments?access_token={1}&limit={2}&fields=from,message,message_tags,created_time,id,attachment,like_count,comment_count,parent&order=chronological&filter=stream'.format(post_id,access_token,limit) 

Như ở đây trật tự quy định như thời gian, bạn cần phải sử dụng sau khi thông số cũng trong url cùng có giá trị người ta có thể nhận được trong paging.cursor.after phần của phản ứng đầu tiên.