JSON Test
In [23]:
import urllib.request, json
with urllib.request.urlopen("http://maps.googleapis.com/maps/api/geocode/json?address=google") as url:
data = json.loads(url.read().decode())
print(data)
In [48]:
import requests
r = requests.get("http://maps.googleapis.com/maps/api/geocode/json?address=google")
r.json()
Out[48]:
In [61]:
$ pip install --upgrade google-api-python-client
In [58]:
"""Простой пример получения доступа к Google Analytics API."""
import argparse
from apiclient.discovery import build
import httplib2
from oauth2client import client
from oauth2client import file
from oauth2client import tools
def get_service(api_name, api_version, scope, client_secrets_path):
"""Получение службы, связывающейся с Google API.
Аргументы:
api_name: имя API (строка);
api_version: версия API (строка);
scope: области действия метода AUTH для авторизации соединения (cписок строк);
client_secrets_path: путь к действительному файлу секретного кода клиента (строка).
Возвращает
службу, которая подключается к указанному API.
"""
# Анализ аргументов командной строки.
parser = argparse.ArgumentParser(
formatter_class=argparse.RawDescriptionHelpFormatter,
parents=[tools.argparser])
flags = parser.parse_args([])
# Настройка объекта Flow, который будет использоваться при необходимости аутентификации.
flow = client.flow_from_clientsecrets(
client_secrets_path, scope=scope,
message=tools.message_if_missing(client_secrets_path))
# Подготовьте учетные данные и авторизуйте с их помощью объекта HTTP.
# Если учетные данные недействительны или не существуют, воспользуйтесь оригинальной
# процедурой клиента. Применение объекта Storage гарантирует, что в случае успеха правильные
# учетные данные будут записаны обратно в файл.
storage = file.Storage(api_name + '.dat')
credentials = storage.get()
if credentials is None or credentials.invalid:
credentials = tools.run_flow(flow, storage, flags)
http = credentials.authorize(http=httplib2.Http())
# Создание объекта службы.
service = build(api_name, api_version, http=http)
return service
def get_first_profile_id(service):
# Используйте объект службы Analytics, чтобы получить первый идентификатор профиля.
# Получение списка всех аккаунтов Google Analytics авторизованного пользователя.
accounts = service.management().accounts().list().execute()
if accounts.get('items'):
# Получение первого аккаунта Google Analytics.
account = accounts.get('items')[0].get('id')
# Получение списка всех ресурсов первого аккаунта.
properties = service.management().webproperties().list(
accountId=account).execute()
if properties.get('items'):
# Получение идентификатора первого ресурса.
property = properties.get('items')[0].get('id')
# Получение списка всех представлений (профилей) первого ресурса.
profiles = service.management().profiles().list(
accountId=account,
webPropertyId=property).execute()
if profiles.get('items'):
# Возвращает идентификатор первого представления (профиля).
return profiles.get('items')[0].get('id')
return None
def get_results(service, profile_id):
# Используйте объект службы Analytics для запроса к Core Reporting API
# о количестве сессий за последние семь дней.
return service.data().ga().get(
ids='ga:' + profile_id,
start_date='7daysAgo',
end_date='today',
metrics='ga:sessions').execute()
def print_results(results):
# Вывод данных в удобном для пользователя формате.
if results:
print ('View (Profile): %s ' % results.get('profileInfo').get('profileName'))
print ('Total Sessions: %s ' % results.get('rows')[0][0])
else:
print ('No results found')
def main():
# Определение области доступа для запроса.
scope = ['https://www.googleapis.com/auth/analytics.readonly']
# Аутентификация и создание службы.
service = get_service('analytics', 'v3', scope, 'client_secrets.json')
profile = get_first_profile_id(service)
print_results(get_results(service, profile))
if __name__ == '__main__':
main()
In [49]:
import requests
r = requests.get("https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A93735856&start-date=2017-04-04&end-date=2017-04-20&metrics=ga%3Asessions&dimensions=ga%3Adate&key=ya29.GlxGBHSQD_DS00-nP_cAvzYX5zEnAeDXPxhxBTnKQ8y7Z90KfGQ_CAlUPgqaIzbYHFUo_s3sYdMc8GqBVpHZty-0wvFksuGiQIH-euPn7usGr-iWLOi4LMFTg6-7Cg")
r.status_code
r.headers['content-type']
r.encoding
r.text
r.json()
Out[49]:
In [ ]:
In [ ]: