Выгрузка данных Facebook с помощью Python

1594
6 мин.

Не обязательно быть программистом, чтобы работать с такими инструментами, как Python. Я убедился в этом на собственном примере. Нужно всего лишь время и желание. В этой статье пойдет речь о том, как с помощью Python и Facebook API собрать нужные для маркетолога данные из рекламного кабинета.

Шаг 1. Facebook for Developers

Для сбора данных с Facebook нужно создать свое приложение, чтобы получить токен доступа и секрет. Тут всё довольно просто:

  1. Переходим на https://developers.facebook.com/ в “Мои приложения”.
  2. Жмём “Создать приложение”.
  1. В типе приложения выбираем “Компания”.
  1. Заполняем информацию о компании.
  1. Проваливаемся внутрь нашего приложения. ID приложения и секрет вы найдёте в настройках. Маркер доступа — в API Marketing. Далее “Инструменты”. Выбираем разрешения для маркера и жмём “Получить маркер”.

Шаг 2. Установка Python и нужных библиотек

Туториал, как установить Python можно найти по первой ссылке в Google, но на всякий случай держите — https://www.python.org/downloads/.

Код писать можно как во внутреннем компиляторе, так и с помощью IDE. Я лично пользуюсь Pycharm — https://www.jetbrains.com/ru-ua/pycharm/

Установить библиотеки можно несколькими методами:

  1. С помощью консоли cmd в Windows. Заходим в cmd и пишем — pip3 install facebook-business, далее ожидаем установку самой библиотеки.
  1. С помощью IDE. Заходим в настройки, далее Python Interpreter. Находим нужную либу и устанавливаем её.

Шаг 3. Создаем проект и начинаем писать свой код

И вот тут начинается самое интересное. Запускаем Pycharm и создаем Python проект, внутри которого и будем писать код. Чтобы использовать библиотеки в нашем проекте, их нужно подключить. Делается это вот так (тут полный список библиотек, которые нам понадобятся):

from facebook_business.api import FacebookAdsApi
from facebook_business.exceptions import FacebookRequestError
from facebook_business.adobjects.adaccount import AdAccount
from facebook_business.adobjects.adreportrun import AdReportRun
from facebook_business.adobjects.adsinsights import AdsInsights
from facebook_business.adobjects.campaign import Campaign
from facebook_business.adobjects.adset import AdSet
from facebook_business.adobjects.adaccountuser import AdAccountUser as AdUser
from facebook_business import adobjects
from pandas import DataFrame
import pandas as pd
import time
import xlwt
import csv

Далее мы создаем три переменные, в которые записываем наш токен, секрет и ID (откуда их брать, я писал выше). Код:

my_access_token = 'токен_програми'
my_app_id = 'ID_програми'
my_app_secret = 'секрет_програми'

Авторизируемся через метод init класса FacebookAdsApi и добавляем пользователя. Код:

FacebookAdsApi.init(my_app_id, my_app_secret, my_access_token)
me = AdUser(fbid='me')

С помощью метода get_ad_accounts получаем перечень рекламных аккаунтов в виде словаря, к которым у вас есть доступ. И тут же выбираем аккаунт, у которого мы будем получать данные.

my_accounts = list(me.get_ad_accounts(fields=[AdAccount.Field.name]))
print(my_accounts)
my_account = my_accounts[6]

На данном этапе мы должны получить ответ в консоли с перечнем всех рекламных аккаунтов, если всё сделано верно.

Метод get_campaigns позволит получить данные о рекламных кампаниях в кабинете. С помощью параметра fields мы можем указать, какие именно данные нужны от кампаний. В моем случае я запрашиваю ID и имена кампаний.

CampaignName = my_account.get_campaigns(fields=[
  Campaign.Field.name,
])
print(CampaignName)

В консоли должны получить ответ с рекламными кампаниями.

Так как меня интересовала разбивка по адсетам, я использовал дополнительную переменную, в которой прописал, какие поля мне нужны: имя кампании, затраты, показы, дата.

fields = [
       AdsInsights.Field.adset_name,
       AdsInsights.Field.spend,
       AdsInsights.Field.impressions,
       AdsInsights.Field.date_start,
       AdsInsights.Field.date_stop]

Используя метод get_insights, получаем данные по кампаниям, их уровень и за какой временной промежуток. Создаем пустой массив, в который мы записываем все эти данные.

mas = []
for i in CampaignName:
   campdata = i.get_insights(params=
                         {'level': 'adset',
                             'date_preset':'today',
'time_increment':1},
         fields= fields)
   m.append(campdata )

Проходимся циклами по этому массиву и записываем каждый параметр в свой отдельный массив.

camp_name_data = []
camp_name_spend = []
camp_date_start = []
camp_date_stop = []
for f in mas:
   for j in f:
       camp_name_data.append(j['adset_name'])
       camp_name_spend.append((j['spend']))
       camp_date_start.append(j['date_start'])
       camp_date_stop.append(j['date_stop'])

В самом начале третьего шага, я подключил дополнительные библиотеки для работы с таблицами: pandas, csv, xlwt. Они помогут с записью данных в excel таблицу либо в csv файл. Создаем объект DataFrame - df и записываем в каждый столбец данные из массивов. Потом это всё преобразовываем в excel файл с помощью метода to_excel.

df = DataFrame()

df['Spend''] = camp_name_spend
df['Campaign'] = camp_name_data
df['Date_start'] = camp_date_start
df['Date_stop'] = camp_date_stop

df.to_excel('./DataStudioNEWxx.

Вуаля! По итогу мы отгрузили данные с Facebook. В зависимости от задач, можно дополнять переменную fields, добавлять новые функции и получать необходимый результат. Python — отличный инструмент для новичков и довольно френдли язык. Так что дополняйте свои знания в различных областях, используйте новые и новые инструменты, и всем удачи!

15 июня 2022
5 / 5 (6 голосов)