Google Analytics를 이용하면 내 사이트에 얼마나 많은 사람들이 들어왔는지, 어떤 페이지를 주로 방문하는지 알 수 있습니다. 또한, 구글 검색을 통해 들어왔는지 트위터나 페이스북의 링크를 통해 들어왔는지 알 수 있습니다.
Google Analytics는 내 웹사이트의 데이터를 가져올 수 있는 API를 제공합니다. 이 API를 통해 방문자 등의 정보를 자신의 기준에 맞게 정리할 수 있습니다.
API는 Java, Python, PHP 의 언어로 제공되며, 누구나 사용할 수 있습니다.
이 글에서는 Python으로 Analytics API를 사용하는 방법에 대해서 알아보겠습니다.
1. Analytics API 설정
Analytics API를 사용하려면, Google cloud에 Service Account를 갖고 있어야 합니다.
자신의 Service Account에 들어가면 Key를 생성할 수 있고 json
파일로 제공됩니다.
Key 파일은 Python에서 API를 호출할 때 필요합니다.
자세한 설정방법은 Guide를 참고해주세요
또 중요한 것은, 아래 그림과 같이 사용하려는 Service Account의 email 주소를 나의 Google Analytics
에 등록해야 합니다.
Analytics에서 Service Account의 email에 Read 권한을 주지 않으면 데이터를 읽을 수 없기 때문입니다.
Google Analytics
에서 아래와 같은 메뉴에 들어가서 Add User
버튼을 누릅니다.
내 Service account의 email을 입력하고 Add
버튼을 누릅니다.
지금까지
- Service Account의 Key 파일을 다운받았습니다.
- Service Account의 email을 Analytics에 등록하였고,
Read & Analyze
권한을 주었습니다.
2. Python 설치
다음 명령어로 analytics api를 설치할 수 있습니다.
$ sudo pip install --upgrade google-api-python-client
3. Session 개수를 가져오는 예제
지난 시간동안 내 사이트에 접속한 Session 개수를 가져오는 예제입니다.
저는 다음과 같이 프로젝트를 구성하였습니다.
├── codechacha-f4f4ad4248b0.json
└── run_analytics.py
codechacha-f4f4ad4248b0.json
는 저의 Key 파일입니다.
run_analytics.py
는 예제를 위한 파이썬 파일입니다.
Python 파일에는 다음과 같이 코드를 입력합니다.
run_analytics.py
from apiclient.discovery import build
from oauth2client.service_account import ServiceAccountCredentials
def get_service(api_name, api_version, scopes, key_file_location):
"""Get a service that communicates to a Google API.
Args:
api_name: The name of the api to connect to.
api_version: The api version to connect to.
scopes: A list auth scopes to authorize for the application.
key_file_location: The path to a valid service account JSON key file.
Returns:
A service that is connected to the specified API.
"""
credentials = ServiceAccountCredentials.from_json_keyfile_name(
key_file_location, scopes=scopes)
# Build the service object.
service = build(api_name, api_version, credentials=credentials)
return service
def get_first_profile_id(service):
# Use the Analytics service object to get the first profile id.
# Get a list of all Google Analytics accounts for this user
accounts = service.management().accounts().list().execute()
if accounts.get('items'):
# Get the first Google Analytics account.
account = accounts.get('items')[0].get('id')
# Get a list of all the properties for the first account.
properties = service.management().webproperties().list(
accountId=account).execute()
if properties.get('items'):
# Get the first property id.
property = properties.get('items')[0].get('id')
# Get a list of all views (profiles) for the first property.
profiles = service.management().profiles().list(
accountId=account,
webPropertyId=property).execute()
if profiles.get('items'):
# return the first view (profile) id.
return profiles.get('items')[0].get('id')
return None
def get_results(service, profile_id):
# Use the Analytics Service Object to query the Core Reporting API
# for the number of sessions within the past seven days.
return service.data().ga().get(
ids='ga:' + profile_id,
start_date='7daysAgo',
end_date='today',
metrics='ga:sessions').execute()
def print_results(results):
# Print data nicely for the user.
if results:
print('View (Profile):{}'.format(results.get('profileInfo').get('profileName')))
print('Total Sessions:{}'.format(results.get('rows')[0][0]))
else:
print('No results found')
def main():
# Define the auth scopes to request.
scope = 'https://www.googleapis.com/auth/analytics.readonly'
key_file_location = './codechacha-f4f4ad4248b0.json'
# Authenticate and construct service.
service = get_service(
api_name='analytics',
api_version='v3',
scopes=[scope],
key_file_location=key_file_location)
profile_id = get_first_profile_id(service)
print_results(get_results(service, profile_id))
if __name__ == '__main__':
main()
여기서 아래 key 파일의 path는 자신의 것으로 변경을 해야 합니다. key는 파이썬 파일과 다른 경로에 있어도 됩니다.
key_file_location = './codechacha-f4f4ad4248b0.json'
실질적으로 API로 데이터를 가져오는 부분은 아래 코드입니다. 7일전부터 오늘까지의 session 개수를 가져오도록 하였습니다.
return service.data().ga().get(
ids='ga:' + profile_id,
start_date='7daysAgo',
end_date='today',
metrics='ga:sessions').execute()
위 코드 실행 결과는 다음과 같습니다.
$ python run_analytics.py
View (Profile):전체 웹사이트 데이터
Total Sessions:1666
참고
Related Posts
- Python - Yaml 파일 파싱하는 방법
- Python - 파일 내용 삭제
- Python - for문에서 리스트 순회 중 요소 값 제거
- Python - 두 리스트에서 공통 요소 값 찾기
- Python - 문자열 앞(뒤)에 0으로 채우기
- Python - 공백으로 문자열 분리
- Python - 중첩 리스트 평탄화(1차원 리스트 변환)
- Python - 16진수 문자열을 Int로 변환
- Python - 두 날짜, 시간 비교
- Python f-string으로 변수 이름, 값 쉽게 출력 (변수명 = )
- Python - nonlocal과 global 사용 방법
- Python 바다코끼리 연산자 := 알아보기
- Python - pip와 requirements.txt로 패키지 관리
- Python - 딕셔너리 보기 좋게 출력 (pprint)
- Python - Requests 사용 방법 (GET/POST/PUT/PATCH/DELETE)
- Python - 온라인 컴파일러 사이트 추천
- Python - os.walk()를 사용하여 디렉토리, 파일 탐색
- Python - 문자열 비교 방법
- Python - Text 파일 읽고 쓰는 방법 (read, write, append)
- Python - 리스트에서 첫번째, 마지막 요소 가져오는 방법
- Python - 두개의 리스트 하나로 합치기
- Python - 리스트의 마지막 요소 제거
- Python - 리스트의 첫번째 요소 제거
- Python 소수점 버림, 4가지 방법
- Python 코드 안에서 버전 확인 방법
- Python 소수점 반올림, round() 예제
- Python - 리스트 평균 구하기, 3가지 방법
- Python - bytes를 String으로 변환하는 방법
- Python - String을 bytes로 변환하는 방법
- Python 버전 확인 방법 (터미널, cmd 명령어)
- Python - 람다(Lambda) 함수 사용 방법
- Python - dict 정렬 (Key, Value로 sorting)
- Python - range() 사용 방법 및 예제
- Python - 리스트를 문자열로 변환
- Python - 문자를 숫자로 변환 (String to Integer, Float)