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

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

Для сбора данных с Facebook нужно создать свое приложение, чтобы получить токен доступа и секрет. Тут всё довольно просто:
- Переходим на https://developers.facebook.com/ в “Мои приложения”.
- Жмём “Создать приложение”.

- В типе приложения выбираем “Компания”.

- Заполняем информацию о компании.

- Проваливаемся внутрь нашего приложения. ID приложения и секрет вы найдёте в настройках. Маркер доступа — в API Marketing. Далее “Инструменты”. Выбираем разрешения для маркера и жмём “Получить маркер”.


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

Туториал, как установить 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= , 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 — отличный инструмент для новичков и довольно френдли язык. Так что дополняйте свои знания в различных областях, используйте новые и новые инструменты, и всем удачи!
Как настраивать приложение facebook api python

МЕРОПРИЯТИЯ
YADRO X MOSCOW USER GROUP C++ MEETUP
Комментарии
Популярные По порядку
Не удалось загрузить комментарии.
ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ
ООП на Python: концепции, принципы и примеры реализации
Программирование на Python допускает различные методологии, но в его основе лежит объектный подход, поэтому работать в стиле ООП на Python очень просто.
3 самых важных сферы применения Python: возможности языка
Существует множество областей применения Python, но в некоторых он особенно хорош. Разбираемся, что же можно делать на этом ЯП.
Программирование на Python: от новичка до профессионала
Пошаговая инструкция для всех, кто хочет изучить программирование на Python (или программирование вообще), но не знает, куда сделать первый шаг.
Как использовать Python для работы с API Facebook
В этой статье мы рассмотрим, как использовать Python для работы с Facebook API. Facebook API позволяет разработчикам доступ к данным, хранящимся на платформе Facebook, и использование этих данных для создания приложений и сервисов.
Установка необходимых библиотек
Для работы с Facebook API, нам понадобится библиотека requests . Установим ее с помощью следующей команды:
pip install requests
Получение токена доступа
Чтобы начать работу с Facebook API, вам необходимо получить токен доступа. Токен доступа предоставляет разрешения на доступ к данным пользователя или страницы.
- Перейдите на Facebook Developer и войдите в свою учетную запись.
- Создайте новое приложение, следуя инструкциям.
- В панели управления вашего приложения перейдите в раздел «Токены доступа» и сгенерируйте токен доступа.
Теперь у вас есть токен доступа, который можно использовать для работы с Facebook API.
Пример работы с Facebook API
Напишем простой код на Python, который получит информацию о пользователе Facebook с помощью API.
import requests access_token = "your_access_token_here" user_id = "user_id_here" url = f"https://graph.facebook.com/?fields=id,name,email&access_token=" response = requests.get(url) data = response.json() print(f"User ID: ") print(f"Name: ") print(f"Email: ")
В этом примере мы импортировали библиотеку requests , указали наш токен доступа и ID пользователя. Затем составили URL для запроса к Facebook API, выполнили запрос и распечатали полученные данные.
Python-разработчик: новая работа через 9 месяцев
Получится, даже если у вас нет опыта в IT

Заключение
Теперь вы знаете, как использовать Python для работы с Facebook API. Мы рассмотрели установку необходимых библиотек, получение токена доступа и пример работы с API. Это лишь начало, и вы можете продолжить изучение возможностей Facebook API для создания уникальных и полезных приложений. Удачи вам в дальнейшем изучении Python и работы с API!
Начало работы
Следуйте этим указаниям, чтобы создать объявление с помощью API Marketing.
Прежде чем начать
Ознакомьтесь с возможностями API Graph и структурой рекламных кампаний Facebook. Для выполнения вызовов вам понадобятся:
Аккаунт разработчика Facebook. Создавайте собственные приложения для Facebook, используя наши инструменты для разработчиков.
Приложение Facebook. Контейнер для рекламы любого типа на Facebook.
Разрешения, которые зависят от способа использования API.
Рекламный аккаунт. С помощью рекламного аккаунта можно управлять доступом к рекламе, настройками биллинга и лимитами затрат. Чтобы получить номер аккаунта, перейдите в раздел Настройка рекламного аккаунта в Ads Manager.
После этого можно начинать работу. Советуем ознакомиться с рекомендациями по использованию API Marketing.
Шаг 1. Создайте кампанию.
Создайте объект кампании (объект класса Campaign ). На этом этапе нужно указать цель рекламы, которая совпадает с общей целью кампании. Рекомендуем сначала создать кампанию со статусом PAUSED , чтобы избежать выставления счетов при тестировании.
cURL Node.js Business SDK PHP Business SDK Python Business SDK Java Business SDK Ruby Business SDK
curl -X POST \ -F 'name="My campaign"' \ -F 'objective="OUTCOME_TRAFFIC"' \ -F 'status="PAUSED"' \ -F 'special_ad_categories=[]' \ -F 'access_token=' \ https://graph.facebook.com/v18.0/act_/campaigns
'use strict'; const bizSdk = require('facebook-nodejs-business-sdk'); const AdAccount = bizSdk.AdAccount; const Campaign = bizSdk.Campaign; const access_token = ''; const app_secret = ''; const app_id = ''; const api = bizSdk.FacebookAdsApi.init(access_token); const showDebugingInfo = true; // Setting this to true shows more debugging info. if (showDebugingInfo) { api.setDebug(true); } const logApiCallResult = (apiCallName, data) => { console.log(apiCallName); if (showDebugingInfo) { console.log('Data:' + JSON.stringify(data)); } }; let fields, params; fields = [ ]; params = { 'name' : 'My campaign', 'objective' : 'OUTCOME_TRAFFIC', 'status' : 'PAUSED', 'special_ad_categories' : [], }; const campaigns = (new AdAccount(id)).createCampaign( fields, params ); logApiCallResult('campaigns api call complete.', campaigns);
require __DIR__ . '/vendor/autoload.php'; use FacebookAds\Object\AdAccount; use FacebookAds\Object\Campaign; use FacebookAds\Api; use FacebookAds\Logger\CurlLogger; $access_token = ''; $app_secret = ''; $app_id = ''; $id = ''; $api = Api::init($app_id, $app_secret, $access_token); $api->setLogger(new CurlLogger()); $fields = array( ); $params = array( 'name' => 'My campaign', 'objective' => 'OUTCOME_TRAFFIC', 'status' => 'PAUSED', 'special_ad_categories' => array(), ); echo json_encode((new AdAccount($id))->createCampaign( $fields, $params )->exportAllData(), JSON_PRETTY_PRINT);
from facebook_business.adobjects.adaccount import AdAccount from facebook_business.adobjects.campaign import Campaign from facebook_business.api import FacebookAdsApi access_token = '' app_secret = '' app_id = '' id = '' FacebookAdsApi.init(access_token=access_token) fields = [ ] params = { 'name': 'My campaign', 'objective': 'OUTCOME_TRAFFIC', 'status': 'PAUSED', 'special_ad_categories': [], } print AdAccount(id).create_campaign( fields=fields, params=params, )
import com.facebook.ads.sdk.*; import java.io.File; import java.util.Arrays; public class SAMPLE_CODE_EXAMPLE { public static void main (String args[]) throws APIException { String access_token = \"\"; String app_secret = \"\"; String app_id = \"\"; String APIContext context = new APIContext(access_token).enableDebug(true); new AdAccount(id, context).createCampaign() .setName(\"My campaign\") .setObjective(Campaign.EnumObjective.VALUE_OUTCOME_TRAFFIC) .setStatus(Campaign.EnumStatus.VALUE_PAUSED) .setParam(\"special_ad_categories\", \"[]\") .execute(); } }
require 'facebook_ads' access_token = '' app_secret = '' app_id = '' id = '' FacebookAds.configure do |config| config.access_token = access_token config.app_secret = app_secret end ad_account = FacebookAds::AdAccount.get(id) campaigns = ad_account.campaigns.create({ name: 'My campaign', objective: 'OUTCOME_TRAFFIC', status: 'PAUSED', special_ad_categories: [], })
В случае успеха возвращается ID созданной рекламной кампании. Этот ID необходимо сохранить. Чтобы убедиться, что кампания создана, можно также найти ее в Ads Manager.