Разбор вложенного массива в результатах Google Places JSON с использованием python - PullRequest
0 голосов
/ 11 ноября 2018

Работая с библиотекой python-google-place , я получил весь набор элементов, то есть place.name, place.place_id и т. Д.

googpla = GooglePlaces(apikey)
searchtxtplace = googpla.text_search(query = hotel[0]+" "+hotel[1])
        for place in searchtxtplace.places:
            place.get_details()
            listatemp.append(place.name)#.encode('utf-8'))
            #print place.name
            listatemp.append(place.place_id)
            diccionario = place.details

Однако проблемы возникают, когда я пытаюсь работать с .details. .details - это строка с внутренним форматом словаря, примерно такая ( Примечание: я не копирую буквально все повторяющиеся элементы, чтобы предложить управляемый источник для выражения моей проблемы ):

{
  'vicinity': '17, Calle Victoria, Marjaliza',
  'utc_offset': 60,
  'rating': Decimal('4.3'),
  'photos': [
    {
      'height': 640,
      'html_attributions': [
        '<a href="https://maps.google.com/maps/contrib/108485266188009851715/photos">Restaurante El Rincón De La Almazara</a>'
      ],
      'photo_reference': 'CmRaAAAAxqW5EpWB86FNCay2mEZMC_Mv7gf1JIqDWJlQ6dln0okwPrnLicyp35p3S7jzafbGaSK5aAnh_yr2cgq1kmf6m6DPsGDQQm8jmGG5xDqBtoeJck7NQzZG8bZ0aMvGc5mEEhDINxTBkJ7HdEJH3bKY7vuVGhR9NbBR_vHgEL8H7OjXDnDecTWc6w',
      'width': 640
    }, #[...]
    ],
  'address_components': [
    {
      'short_name': 'Calle Victoria',
      'types': [
        'route'
      ],
      'long_name': 'Calle Victoria'
    }, #[...]
    'reviews': [
    {
      'profile_photo_url': 'https://lh4.googleusercontent.com/-FAGiynVp-QM/AAAAAAAAAAI/AAAAAAAABpU/GsFl3D2MR80/s128-c0x00000000-cc-rp-mo/photo.jpg',
      'author_url': 'https://www.google.com/maps/contrib/103775273852380328675/reviews',
      'author_name': 'Luis Alfonso GO',
      'rating': 5,
      'time': 1541463254,
      'relative_time_description': 'in the last week',
      'text': 'Buena comida y mejor atención',
      'language': 'es'
    },
    {
      'profile_photo_url': 'https://lh6.googleusercontent.com/-OMlBRtCyvwU/AAAAAAAAAAI/AAAAAAAAAAA/ABtNlbDV0BzvHwUu5lx1Z6u5-cp1i7bPlw/s128-c0x00000000-cc-rp-mo-ba3/photo.jpg',
      'author_url': 'https://www.google.com/maps/contrib/115856190466605639253/reviews',
      'author_name': 'Felix Anton PL',
      'rating': 5,
      'time': 1531241133,
      'relative_time_description': '4 months ago',
      'text': 'Situado en un pequeño pueblo de Toledo,a 6 Km de Los Yebenes,donde podrá degustar su excelente cocina,con gran variedad de exquisitos entrantes,buenos pescados y unas carnes muy bien presentadas y excelente sabor.\nDispone de habitaciones donde poder disfrutar del amanecer de los montes de Toledo.',
      'language': 'es'
    }, #[...]
    ]
      'types': [
    'restaurant',
    'point_of_interest',
    'food',
    'establishment'
  ],
  'place_id': 'ChIJXcd_0BQ9ag0R9TC6IVYxSuI',
  'website': 'https://www.facebook.com/rinconde.laalmazara',
  'scope': 'GOOGLE'
}

Inside place.details Я могу работать с уникальными элементами, такими как 'rating'

listatemp.append(json.dumps(diccionario.get("rating"), default=decimal_default))

Но я не смог получить доступ к элементам внутри вложенного массива 'reviews'. В самом деле, я хотел бы зацикливаться внутри него, чтобы получить пять значений «времени». Я попытался получить доступ к дампу 'reviews', но вместо правильного json получаю строку и не могу ссылаться на такие элементы, как 'time'

reviewes = (json.dumps(diccionario.get("reviews")))

У меня вопрос: как я могу получить доступ к вложенному массиву «reviews» или другой структуре данных, такой как эта?

Заранее большое спасибо

...