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

2161
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 проект, внутри которого и будем писать код. Чтобы использовать библиотеки в нашем проекте, их нужно подключить. Делается это вот так (тут полный список библиотек, которые нам понадобятся):

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 (откуда их брать, я писал выше). Код:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

python
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.

python
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 голосов)