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)


{'results': [{'address_components': [{'long_name': '1600', 'short_name': '1600', 'types': ['street_number']}, {'long_name': 'Amphitheatre Parkway', 'short_name': 'Amphitheatre Pkwy', 'types': ['route']}, {'long_name': 'Mountain View', 'short_name': 'Mountain View', 'types': ['locality', 'political']}, {'long_name': 'Santa Clara County', 'short_name': 'Santa Clara County', 'types': ['administrative_area_level_2', 'political']}, {'long_name': 'California', 'short_name': 'CA', 'types': ['administrative_area_level_1', 'political']}, {'long_name': 'United States', 'short_name': 'US', 'types': ['country', 'political']}, {'long_name': '94043', 'short_name': '94043', 'types': ['postal_code']}], 'formatted_address': '1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA', 'geometry': {'location': {'lat': 37.4219999, 'lng': -122.0840575}, 'location_type': 'APPROXIMATE', 'viewport': {'northeast': {'lat': 37.4233488802915, 'lng': -122.0827085197085}, 'southwest': {'lat': 37.4206509197085, 'lng': -122.0854064802915}}}, 'place_id': 'ChIJj61dQgK6j4AR4GeTYWZsKWw', 'types': ['establishment', 'point_of_interest']}], 'status': 'OK'}

In [48]:
import requests
r = requests.get("http://maps.googleapis.com/maps/api/geocode/json?address=google")
r.json()


Out[48]:
{'results': [{'address_components': [{'long_name': '1600',
     'short_name': '1600',
     'types': ['street_number']},
    {'long_name': 'Amphitheatre Parkway',
     'short_name': 'Amphitheatre Pkwy',
     'types': ['route']},
    {'long_name': 'Mountain View',
     'short_name': 'Mountain View',
     'types': ['locality', 'political']},
    {'long_name': 'Santa Clara County',
     'short_name': 'Santa Clara County',
     'types': ['administrative_area_level_2', 'political']},
    {'long_name': 'California',
     'short_name': 'CA',
     'types': ['administrative_area_level_1', 'political']},
    {'long_name': 'United States',
     'short_name': 'US',
     'types': ['country', 'political']},
    {'long_name': '94043', 'short_name': '94043', 'types': ['postal_code']}],
   'formatted_address': '1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
   'geometry': {'location': {'lat': 37.4219999, 'lng': -122.0840575},
    'location_type': 'APPROXIMATE',
    'viewport': {'northeast': {'lat': 37.4233488802915,
      'lng': -122.0827085197085},
     'southwest': {'lat': 37.4206509197085, 'lng': -122.0854064802915}}},
   'place_id': 'ChIJj61dQgK6j4AR4GeTYWZsKWw',
   'types': ['establishment', 'point_of_interest']}],
 'status': 'OK'}

In [61]:
$ pip install --upgrade google-api-python-client


  File "<ipython-input-61-edaac912f848>", line 1
    $ pip install --upgrade google-api-python-client
    ^
SyntaxError: invalid syntax

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()


---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
<ipython-input-58-7e1a9eb93159> in <module>()
      3 import argparse
      4 
----> 5 from apiclient.discovery import build
      6 import httplib2
      7 from oauth2client import client

ModuleNotFoundError: No module named 'apiclient'

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]:
{'error': {'code': 401,
  'errors': [{'domain': 'global',
    'location': 'Authorization',
    'locationType': 'header',
    'message': 'Login Required',
    'reason': 'required'}],
  'message': 'Login Required'}}

In [ ]:


In [ ]: