Почему Graph API пропускает фиды постов? - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь внедрить скребок в фейсбуке, чтобы узнать о реакциях на фид-постах фейсбук-страниц.Я заметил, что результаты (посты) фактического дня и последних дней правильные, но чем дальше он идет в прошлом, тем больше постов в фиде пропускается, и количество возвращаемых результатов очень мало.

Почему График пропускает много сообщений?Иногда это пропускает даже полные месяцы!

Вот код, который я использую:

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 голосов
/ 25 мая 2018

Это сообщение об ошибке .С тех пор как было сообщено, правила изменились с API v2.12, и могут быть достигнуты только топ 600 сообщений в год.Это явно плохие новости для разработчиков и исследователей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...