为什么Graph API会跳过Feed帖子?

时间:2018-05-23 19:11:05

标签: facebook facebook-graph-api facebook-graph-api-v2.4 facebook-graph-api-v2.8

我正在尝试实施Facebook刮刀,以获取有关facebook页面的Feed帖子上的反应的见解。我注意到实际日期和最后几天的结果(帖子)是正确的,但过去进一步,更多的Feed帖子被跳过,返回结果的计数非常低。

为什么Graph跳过很多帖子?有时甚至会跳过整整几个月!

以下是我使用的代码:

import json
import datetime
import csv
import time
import urllib.request  
import urllib.error
import requests
import numpy as np
import matplotlib.pyplot as plt
import json
from urllib.parse import urlencode
import pandas as pd

page_id="nytimes"

token="my_User_Token_Here" #using a user token got from [https://developers.facebook.com/tools/explorer/][1]

url="https://graph.facebook.com/v2.12/"+page_id+"/posts/?fields=id,created_time,message,shares.summary(true).limit(0),comments.summary(true).limit(0),likes.summary(true),reactions.type(LOVE).limit(0).summary(total_count).as(Love),reactions.type(WOW).limit(0).summary(total_count).as(Wow),reactions.type(HAHA).limit(0).summary(total_count).as(Haha),reactions.type(SAD).limit(0).summary(1).as(Sad),reactions.type(ANGRY).limit(0).summary(1).as(Angry)&access_token="+token+"&limit=100"

posts = []
found = False

try:
    while (True):
        print(url)
        facebook_connection = urlopen(url)
        data = facebook_connection.read().decode('utf8')
        json_object = json.loads(data)
        allposts=json_object["data"]
        allposts = np.asarray(allposts)
        created = '2018-03-01' 
        for i in range(0,100,1):
            if (pd.to_datetime(allposts[i]['created_time']) > pd.to_datetime(created)):
                #print(allposts[i]['created_time'])
                posts.append(allposts[i])
            else:
                print(i,  "%i fucking here!")
                posts.append(allposts[i])
                found = True
                break;
            if (i == 99):
                #print('here is: ' + i)
                url = json_object["paging"]["next"]
        if (found == True):
            break; 


    df=pd.DataFrame(posts)


except Exception as ex:
    print (ex)

1 个答案:

答案 0 :(得分:0)

这是reported bug。自报告以来,API v2.12已更改规则,并且每年只能发送top 600个帖子。对于开发人员和研究人员来说,这显然是个坏消息。