1

Я пытаюсь получить результаты запроса объявлений Facebook в базу данных pandas, но возвращенный объект не сотрудничает.Получите Facebook Ads Результаты поиска в pandas dataframe

Я бегу простой пример использования асинхронной как изложено Facebook здесь: https://developers.facebook.com/docs/marketing-api/insights/v2.6

campaign = Campaign(my_campaign) 
params = { 
    'level': 'ad', 
    'date_preset': 'lifetime', 
    'time_increment': 1, 
    'fields': ['date_start', 'ad_id', 'ad_name', 'spend', 'reach', 'total_actions'] 
} 
async_job = campaign.get_insights(params=params, async=True) 

async_job.remote_read() 

while async_job[AsyncJob.Field.async_percent_completion] < 100: 
    time.sleep(1) 
    async_job.remote_read() 

time.sleep(1) 

result = async_job.get_result() 

И тогда я пытаюсь изменить результат в список а-ля этот ответ здесь: https://stackoverflow.com/a/36397567/5459606

result = [x for x in async_job.get_result()] 
type(result) 

Это возвращает результат в виде списка, но я получаю сообщение об ошибке при попытке прочитать в панд с использованием DF = pd.DataFrame (результат)

, если я смотрю на то, что возвращается я вижу каждый элемент списка выглядит следующим образом:

<AdsInsights> { 
    "ad_id": "6035212284443", 
    "ad_name": "Outlook - Image 2, copy 1", 
    "date_start": "2015-11-21", 
    "date_stop": "2015-11-21", 
    "reach": 625, 
    "spend": 2.4, 
    "total_actions": 10 
} 

И если я прошу типа этого obejct, это facebookads.adobjects.adsinsights.AdsInsights и не словарь, который Я предполагаю, что проблема. Кто-нибудь знает, как решить эту проблему, и позвольте мне использовать панды для чтения этих результатов в Facebook.

ответ

0

HaHa, вы можете использовать list(), а затем использовать pandas.DataFrame. Вы можете посмотреть здесь [How to parse nested FB API response from Python SDK

+0

Эй, спасибо за ответ. Я следил за тем, как вы это делали в своем примере (result = [x for x in async_job.get_result()]), но я получил ошибку. KeyError: «None» –

+0

О, я забыл, что вы используете «асинхронный». Если вы хотите получить данные, вы должны изменить «async = True» на «async = False». Я помогу на этот раз, когда это может помочь. –

+0

Эй, я очень ценю помощь. К сожалению, он по-прежнему не работает из-за KeyError: «None». Я думаю, проблема заключается в том, что когда я смотрю на одну запись в списке результатов, используя результат [0] .keys(), я вижу тонну ключей там (независимо от тех, которые я выбираю в параметрах моих полей) и один тогда None, а не как строка. Просто сижу там, как «Нет», прямо посередине, все испортить (я думаю). –

 Смежные вопросы

  • Нет связанных вопросов^_^