Выгрузка данных Facebook с помощью Python
Не обязательно быть программистом, чтобы работать с такими инструментами, как Python. Я убедился в этом на собственном примере. Нужно всего лишь время и желание. В этой статье пойдет речь о том, как с помощью Python и Facebook API собрать нужные для маркетолога данные из рекламного кабинета.
Для сбора данных с Facebook нужно создать свое приложение, чтобы получить токен доступа и секрет. Тут всё довольно просто:
- Переходим на https://developers.facebook.com/ в “Мои приложения”.
- Жмём “Создать приложение”.
- В типе приложения выбираем “Компания”.
- Заполняем информацию о компании.
- Проваливаемся внутрь нашего приложения. ID приложения и секрет вы найдёте в настройках. Маркер доступа — в API Marketing. Далее “Инструменты”. Выбираем разрешения для маркера и жмём “Получить маркер”.
Туториал, как установить Python можно найти по первой ссылке в Google, но на всякий случай держите — https://www.python.org/downloads/.
Код писать можно как во внутреннем компиляторе, так и с помощью IDE. Я лично пользуюсь Pycharm — https://www.jetbrains.com/ru-ua/pycharm/
Установить библиотеки можно несколькими методами:
- С помощью консоли cmd в Windows. Заходим в cmd и пишем — pip3 install facebook-business, далее ожидаем установку самой библиотеки.
- С помощью 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 — отличный инструмент для новичков и довольно френдли язык. Так что дополняйте свои знания в различных областях, используйте новые и новые инструменты, и всем удачи!