Подробное руководство по извлечению данных из Instagram
Instagram - это социальная сеть, которая позволяет пользователям публиковать фотографии и видео. У приложения более 800 миллионов активных пользователей в месяц. В основном он используется, чтобы делиться личными моментами с друзьями, но есть также некоторые бизнес-функции, которые можно использовать в маркетинговых целях. Instagram Graph API - это набор конечных точек Facebook Graph API, которые позволяют приложениям получать доступ к данным в профессиональных аккаунтах Instagram (как бизнес-аккаунтах, так и аккаунтах Creator).
Чтобы использовать Instagram API, доступ к учетным записям осуществляется косвенно через учетные записи Facebook, поэтому все пользователи приложения должны иметь учетную запись Facebook для взаимодействия с API. Без лишних слов, давайте сразу же приступим.
Шаг 1. Регистрация приложения
Чтобы начать, мы сначала зарегистрируемся как разработчик Facebook, перейдя в Facebook для разработчиков и щелкнув Начать. После регистрации мы создадим наше первое приложение в Facebook Developers. Следующее, что нужно сделать, это выбрать тип нашего приложения, имя приложения и адрес электронной почты. После того, как мы завершим процесс создания приложения, наше приложение будет загружено на панели инструментов приложения, как показано ниже.
После этого на панели инструментов мы нажмем настройка, чтобы добавить нашу учетную запись Instagram.
Шаг 2. Аутентификация
Аутентификация пользователя приложения осуществляется с помощью токенов доступа. Мы будем использовать токен доступа Facebook. Мы можем получить токен доступа из Graph API Explorer, а также сгенерировать долгоживущий токен доступа, который мы можем использовать в нашем коде.
Мы также не должны забывать добавлять разрешения, относящиеся к данным, которые мы хотим получить из Instagram.
Это разрешение мы добавили на страницу Api Explorer.
Затем мы приступим к извлечению наших данных, поскольку у нас есть токен доступа. Данные, которые мы здесь будем генерировать, в основном представляют собой данные о ежедневных показах и данные об общем ежедневном охвате из API.
показов в день
Количество показов в день, которое является метрикой в разделе instagram_manage_insights, отражает общее количество раз, когда ваш контент отображается людям в Instagram, включая повторные просмотры.
Напишите следующие строки кода для извлечения данных.
#We import our libraries import requests import pandas as pd import json import numpy as np from datetime import datetime, timedelta #we instantiate a time variable,so we could generate date from 2021 to 2019 d0 = datetime(2019, 12,16) d1 = datetime(2021, 9,15) dt = timedelta(days = 10) #Numpy was used to calculate 10 days addition to each date and then save to a list dates = np.arange(d0, d1, dt).astype(datetime).tolist() EndTime=[] #we loop through the dates here to add ten days to each of our dates and make this our end time for i in dates: days=timedelta(days=10) vl=i+days B.append(vl) startTime=[] #we loop through the EndTime list to remove 10 days from the date and make this our Start time. for i in EndTime: b=i - timedelta(days=10) StartTime.append(b)
После того, как мы сгенерировали время начала и время окончания, мы передадим URL. Затем преобразуйте это индивидуальное время в UTC, потому что для передачи его через API оно должно быть в формате UTC.
#we import the time library import time import datetime convert_EndTime=[] #we loop through the list containing this date and convert each to a UTC format for i in convert_EndTime: unixtime = time.mktime(i.timetuple()) convert_EndTime.append(unixtime) convert_startTime=[] #we loop through the list containing this date and convert each to a UTC format for i in convert_StartTime: unixtime = time.mktime(i.timetuple()) convert_startTime.append(unixtime) tot_impressions=[] #we create a function here and use the get request to obtain the data and also we pass all our parameters in def impressions(): #we loop through the starttime to pass in the values for i, j in enumerate(startTime): #the url to send to the api the_url = 'https://graph.facebook.com/v12.0/17841425263195637/insights?metric=impressions&period=days_28&since=%s&until=%s'%(j, EndTime[i]) r_response = requests.get(the_url, headers = { 'Authorization':'Bearer '+ 'EAAMtRXnqMycBAOz9pcx9GzQmPhKEUJgr9WGNZBBu4tZAaWcJ1RXtE5Ex0mscsrRPyBK20VHLE7P0bSDz3rDF8js9SefswaZAyWCLaO5rqHsFrweLYf8x14Gb9Pc5Xh0DWcOWIJJvZA1qDZB5Va3RG5ZAHKnZBz0HAugqIuejVlqT1egHDAS6p01', 'Content-Type': 'application/json' } ) #we use json to load this response data reaction_response_data = json.loads(r_response.text) #we use sleep method here because the data we want to get is quite much and we don't want our code to crash time.sleep(2) #we append all data to an empty list we defined earlier tot_impressions.append(reaction_response_data) time.sleep(5)
Очистка данных
Следующим шагом будет очистка данных и извлечение всех необходимых столбцов.
End_time=[] Description=[] Impression_values=[] #we loop through the data and append all data we need to separate list for i in tot_impressions: for v in i['data']: Description.append(v['description']) for s in v['values']: End_time.append(s['end_time']) Impression_values.append(s['value']) import pandas as pd #We then save a data as a dataframe dataframH= {'No_of_Times_Media_Account_viewed_Daily': Impression_values,'Time':End_time} dfH = pd.DataFrame(dataframH)
Данные об общем охвате за день
Общий охват в Instagram - это общее количество людей, которые видят ваш контент, независимо от того, сколько раз они его просматривали или взаимодействовали с ним.
Напишите строки кода ниже, чтобы извлечь эти данные.
#We create our function here and initiate an empty list to save our response tot_reach=[] def reach(): #We loop through the starttime and pass it under our metric and as well the End time for i, j in enumerate(startTime): #the url to our api the_url = 'https://graph.facebook.com/v12.0/17841425263195637/insights?metric=reach,profile_views&period=day&since=%s&until=%s'%(j, EndTime[i]) #we use the GET Request method to extract our data r_response = requests.get(the_url, headers = { 'Authorization':'Bearer '+ 'EAAMtRXnqMycBAOz9pcx9GzQmPhKEUJgr9WGNZBBu4tZAaWcJ1RXtE5Ex0mscsrRPyBK20VHLE7P0bSDz3rDF8js9SefswaZAyWCLaO5rqHsFrweLYf8x14Gb9Pc5Xh0DWcOWIJJvZA1qDZB5Va3RG5ZAHKnZBz0HAugqIuejVlqT1egHDAS6p01', 'Content-Type': 'application/json' } ) #we use json to load the data response reaction_response_data = json.loads(r_response.text) time.sleep(2) print('getting_data') #we append all data to an empty list tot_reach.append(reaction_response_data) time.sleep(5)
Очистка данных
Мы очистим данные об общем охвате с помощью следующего кода. После этого разделите каждый столбец по отдельности, а затем объедините в один DataFrame.
a_bucket=[] #we loop through our response data for i in tot_reach: for k in i['data']: a_bucket.append(k) #we create the size of the data here and opened an empty list for each column we need a_size=len(a_bucket) title=[] values=[] Endtime=[] #we loop through the data using the size of the our data and then append the data to individual list created for i in range(0, a_size): title.append(a_bucket[i]['title']) values.append([m['value'] for m in a_bucket[i]['values']]) Endtime.append([m['end_time'] for m in a_bucket[i]['values']]) #we convert this data to a dataframe datafram_r = {'title': title, 'Nvalues': values,'Time':Endtime} df_R = pd.DataFrame(datafram_r) #Some columns in this dataframe contains data which are in a single list #We will make each data to be row by row format rows=[] #we will loop through the column we're interested in working with and use lambda to handle this _df= df_R.apply(lambda row: [rows.append([row['title'], nn]) for nn in row.Nvalues], axis=1) df_new_1 = pd.DataFrame(rows, columns=['title','Total_No_of_Reach_per_day_from_users']) rows_1=[] _df= df_R.apply(lambda row: [rows_1.append([row['title'], nn]) for nn in row.Time], axis=1) df_new_2 = pd.DataFrame(rows_1, columns=['title','Time']) df_new_1['Time'] = df_new_2['Time']
Заключение
Аналитика данных очень полезна для понимания того, какие сообщения более успешны, чем другие, определения ключевых факторов влияния и анализа демографии подписчиков страницы. Эти идеи можно использовать для создания эффективных кампаний, которые находят отклик у этой аудитории.
Социальные сети постоянно меняются, и каждый год появляются новые функции. Важно быть в курсе этих изменений, чтобы максимизировать рентабельность инвестиций в маркетинговые кампании в социальных сетях. Спасибо за чтение.