Вивантаження даних Facebook за допомогою Python

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

15 червня 2022
5 / 5 (6 голосів)