如何通过python从foursquare获取给定用户id的用户签到

时间:2012-01-23 09:27:50

标签: python foursquare

class FourSquareTestHandler(SecurePageHandler):
    def get(self):
    logging.info('***********************')
    logging.info('*****GET****')
    logging.info('***********************')
    try:
        request =\
                    urllib2.Request('https://api.foursquare.com/v2/users/self/checkins?oauth_token=LAF1W3VMSI0DGQYIBTNIYVIZG4VE2RFGESM45LDJRSQHFTK3&v=20120123')
        data = simplejson.load(urllib2.urlopen(request))
        logging.info('=========================')
        logging.info('*********Success*********')
        logging.info('=========================')
        logging.info(data)
        logging.info('======================================')


    except Exception:
        logging.info('**********EXCEPTION*********')
        pass

    context = {}
    return self.render_response('foursquaretest.html', **context)

您好我编写此代码以获取用户签入计数。我设法为我获取一个simplejson反序列化的数据对象。我想知道如何访问数据对象中的单个元素,因为目前你正在获得类似这样的东西

 {
     u 'notifications': [{
         u 'item': {
             u 'unreadCount': 0
         },
         u 'type': u 'notificationTray'
     }],
     u 'meta': {
         u 'code': 200
     },
     u 'response': {
         u 'checkins': {
             u 'count': 6,
             u 'items': [{
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'ODEL Warehouse',
                     u 'contact': {},
                     u 'location': {
                         u 'city': u 'Colombo',
                         u 'country': u 'Sri Lanka',
                         u 'postalCode': u '00600',
                         u 'state': u 'Western Province',
                         u 'address': u 'Highlevel Rd',
                         u 'lat': 6.8754399960498391,
                         u 'lng': 79.881239696240982
                     },
                     u 'stats': {
                         u 'tipCount': 2,
                         u 'checkinsCount': 76,
                         u 'usersCount': 25
                     },
                     u 'id': u '4d217410b69c6dcbf1787995',
                     u 'categories': []
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d1940e4b0d1a657597d73',
                 u 'createdAt': 1327307072
             }, {
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'Chesmi Consolidated',
                     u 'contact': {},
                     u 'location': {
                         u 'lat': 6.8783062620154825,
                         u 'city': u 'colombo 5',
                         u 'lng': 79.879610192565167,
                         u 'country': u 'Sri Lanka',
                         u 'address': u '21, Siebel Avenue,'
                     },
                     u 'stats': {
                         u 'tipCount': 0,
                         u 'checkinsCount': 2,
                         u 'usersCount': 2
                     },
                     u 'id': u '4ed4cab6e5fa7b1a923b1e1e',
                     u 'categories': []
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d1920e4b0e6badd487a53',
                 u 'createdAt': 1327307040
             }, {
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'Commercial Bank',
                     u 'contact': {},
                     u 'location': {
                         u 'city': u 'Colombo 5',
                         u 'country': u 'Sri Lanka',
                         u 'postalCode': u '00500',
                         u 'state': u 'Western Province',
                         u 'address': u 'High Level Rd',
                         u 'lat': 6.8776848396168955,
                         u 'lng': 79.879610192565167
                     },
                     u 'stats': {
                         u 'tipCount': 0,
                         u 'checkinsCount': 42,
                         u 'usersCount': 9
                     },
                     u 'id': u '4c85bdb1d4e237047aaf8588',
                     u 'categories': [{
                         u 'pluralName': u 'Banks',
                         u 'primary': True,
                         u 'name': u 'Bank',
                         u 'shortName': u 'Bank / Financial',
                         u 'id': u '4bf58dd8d48988d10a951735',
                         u 'icon': {
                             u 'prefix': u 'https://foursquare.com/img/categories/shops/financial_',
                             u 'name': u '.png',
                             u 'sizes': [32, 44, 64, 88, 256]
                         }
                     }]
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d18f5e4b0e6badd485953',
                 u 'createdAt': 1327306997
             }, {
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'Siebel Avenue Bus Stop 138',
                     u 'contact': {},
                     u 'location': {
                         u 'lat': 6.8775550799999996,
                         u 'country': u 'Sri Lanka',
                         u 'lng': 79.879341159999996
                     },
                     u 'stats': {
                         u 'tipCount': 3,
                         u 'checkinsCount': 76,
                         u 'usersCount': 15
                     },
                     u 'id': u '4e5c53b345dd045aab4d7dfa',
                     u 'categories': [{
                         u 'pluralName': u 'Bus Stations',
                         u 'primary': True,
                         u 'name': u 'Bus Station',
                         u 'shortName': u 'Bus Station',
                         u 'id': u '4bf58dd8d48988d1fe931735',
                         u 'icon': {
                             u 'prefix': u 'https://foursquare.com/img/categories/travel/busstation_',
                             u 'name': u '.png',
                             u 'sizes': [32, 44, 64, 88, 256]
                         }
                     }]
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d18e1e4b0e2eeed04eff2',
                 u 'createdAt': 1327306977
             }, {
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'Visni',
                     u 'contact': {},
                     u 'location': {
                         u 'lat': 6.8785901069641113,
                         u 'country': u 'Sri Lanka',
                         u 'lng': 79.879791259765625
                     },
                     u 'stats': {
                         u 'tipCount': 1,
                         u 'checkinsCount': 8,
                         u 'usersCount': 1
                     },
                     u 'id': u '4eb75312f5b94bd85c9fa375',
                     u 'categories': [{
                         u 'pluralName': u 'Tech Startups',
                         u 'primary': True,
                         u 'name': u 'Tech Startup',
                         u 'shortName': u 'Tech Startup',
                         u 'id': u '4bf58dd8d48988d125941735',
                         u 'icon': {
                             u 'prefix': u 'https://foursquare.com/img/categories/shops/technology_',
                             u 'name': u '.png',
                             u 'sizes': [32, 44, 64, 88, 256]
                         }
                     }]
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d18cde4b0850c85e124d1',
                 u 'createdAt': 1327306957
             }, {
                 u 'venue': {
                     u 'verified': False,
                     u 'name': u 'Calcey Technologies',
                     u 'contact': {
                         u 'phone': u '0112827560',
                         u 'formattedPhone': u '011 2 827560'
                     },
                     u 'location': {
                         u 'city': u 'Colombo 5',
                         u 'country': u 'Sri Lanka',
                         u 'postalCode': u '00500',
                         u 'state': u 'Sri Lanka',
                         u 'crossStreet': u 'Highlevel Rd',
                         u 'address': u '21 Siebel Ave',
                         u 'lat': 6.8782598000000004,
                         u 'lng': 79.879707733333333
                     },
                     u 'stats': {
                         u 'tipCount': 0,
                         u 'checkinsCount': 324,
                         u 'usersCount': 14
                     },
                     u 'id': u '4c43efd62d3ec9b60e3f2eae',
                     u 'categories': [{
                         u 'pluralName': u 'Tech Startups',
                         u 'primary': True,
                         u 'name': u 'Tech Startup',
                         u 'shortName': u 'Tech Startup',
                         u 'id': u '4bf58dd8d48988d125941735',
                         u 'icon': {
                             u 'prefix': u 'https://foursquare.com/img/categories/shops/technology_',
                             u 'name': u '.png',
                             u 'sizes': [32, 44, 64, 88, 256]
                         }
                     }]
                 },
                 u 'comments': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'photos': {
                     u 'count': 0,
                     u 'items': []
                 },
                 u 'timeZone': u 'Asia/Colombo',
                 u 'type': u 'checkin',
                 u 'id': u '4f1d18a3e4b0a6271ab6c175',
                 u 'createdAt': 1327306915
             }]
         }
     }
 }

1 个答案:

答案 0 :(得分:3)

你的data是一个python词典对象。

它内嵌了字典和列表。

例如,

>>> data['notifications']
[{u'item': {u'unreadCount': 0}, u'type': u'notificationTray'}]

>>> data['notifications']['item']['unreadCount']
0

>>> data['response']['checkins']['count']
6

>>> data['response']['checkins']['items'][0]
    {u'comments': {u'count': 0, u'items': []},
     u'createdAt': 1327307072,
     u'id': u'4f1d1940e4b0d1a657597d73',
     u'photos': {u'count': 0, u'items': []},
     u'timeZone': u'Asia/Colombo',
     u'type': u'checkin',
     u'venue': {u'categories': [],
                u'contact': {},
                u'id': u'4d217410b69c6dcbf1787995',
                u'location': {u'address': u'Highlevel Rd',
                              u'city': u'Colombo',
                             u'country': u'Sri Lanka',
                              u'lat': 6.8754399960498391,
                              u'lng': 79.881239696240982,
                              u'postalCode': u'00600',
                              u'state': u'Western Province'},
                u'name': u'ODEL Warehouse',
                u'stats': {u'checkinsCount': 76,
                           u'tipCount': 2,
                           u'usersCount': 25},
                u'verified': False}}

这表明有6个(签入)条目。所以要获得第一个(第0个列表项)的id签到,

>>> data['response']['checkins']['items'][0]['id']
u'4f1d1940e4b0d1a657597d73'

要获得第一条评论(内容),

>>> data['response']['checkins']['items'][0]['comments']['items'][0]

和其他领域类似。