Вивантаження даних 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. Залежно від завдань, можна доповнювати змінну поля, додавати нові функції та отримувати необхідний результат. Python — чудовий інструмент для новачків і доволі френдлі мова. Так що доповнюйте свої знання в різних галузях, використовуйте нові та нові інструменти, і всім успіхів!