Скачать все сообщения для группы У меня есть права администратора для использования Facebook Graph API

Мы пытаемся получить ВСЕ сообщения с соответствующими комментариями и изображениями, сделанные в нашей группе за последний год. Я пытался использовать GraphAPI для этого, но разбиение на страницы означает, что мне нужно получить данные, затем скопировать ссылку «следующая» и запустить снова. К сожалению, это требует МНОГО работы, так как в группе более 2 миллионов постов.

Кто-нибудь знает способ сделать это, не тратя несколько дней на клики? Также учтите, что группа насчитывает более 4000 участников и растет каждый день, в среднем около 1000 постов в ДЕНЬ на данный момент.

Для любопытных, ПЛАН состоит в том, чтобы отобрать стадо... Я БЕЗНАДЕЖЕН в программировании и недавно начал изучать Python...


person Brendan    schedule 29.01.2014    source источник


Ответы (2)


Я сделал это так, вам, вероятно, придется перебирать все сообщения, пока data не станет пустым. Обратите внимание, что это версия Python 2.x.

from facepy import GraphAPI
import json

group_id = "YOUR_GROUP_ID"
access_token = "YOUR_ACCESS_TOKEN"

graph = GraphAPI(access_token)

# https://facepy.readthedocs.org/en/latest/usage/graph-api.html
data = graph.get(group_id + "/feed", page=False, retry=3, limit=800)

with open('content.json', 'w') as outfile:
  json.dump(data, outfile, indent = 4)
person dh762    schedule 10.02.2014
comment
Оценил! Я проверю это сегодня вечером!! - person Brendan; 18.02.2014
comment
И я сталкиваюсь с проблемами. По какой-то причине я борюсь за установку Facepy. Дай мне несколько минут, и я вернусь к этому... - person Brendan; 19.02.2014
comment
Где взять токен доступа? - person Pitto; 01.06.2015
comment
См. это сообщение SO - person dh762; 02.06.2015

Я только что нашел и использовал решение @dfdfdf, и это здорово! Вы можете обобщить его для загрузки с нескольких страниц канала, а не только с первой, например:

from facepy import GraphAPI
import json

group_id = "\YOUR_GROUP_ID"
access_token = "YOUR_ACCESS_TOKEN"

graph = GraphAPI(access_token)
pages = graph.get(group_id + "/feed", page=True, retry=3, limit=1000)
i = 0
for p in pages:
    print 'Downloading page', i
    with open('content%i.json' % i, 'w') as outfile:
        json.dump(p, outfile, indent = 4)
    i += 1
person Eoin    schedule 05.06.2014