2017-02-04 4 views
0

Я хочу, чтобы моя страница facebook понравилась с python, но я получаю следующую ошибку.Как исправить объект typeError 'int' не имеет атрибута '__getitem__'?

Traceback (most recent call last): 
    File "facebook_test.py", line 29, in <module> 
    print "Page Name:"+ page_data['name'] 
TypeError: 'int' object has no attribute '__getitem__' 

Есть несколько связанных сообщений об этом, но я не могу понять его

Вот мой код используется.

import urllib2 
import json 
import time 

def get_page_data(page_id,access_token): 
    api_endpoint = "https://graph.facebook.com/v2.4/" 
    fb_graph_url = api_endpoint+page_id+"?fields=id,name,likes,unread_notif_count,link&access_token="+access_token 
    try: 
     api_request = urllib2.Request(fb_graph_url) 
     api_response = urllib2.urlopen(api_request) 

     try: 
      return json.loads(api_response.read()) 
     except (ValueError, KeyError, TypeError): 
      return "JSON error" 

    except IOError, e: 
     if hasattr(e, 'code'): 
      return e.code 
     elif hasattr(e, 'reason'): 
      return e.reason 

while 1: 
    page_id = "xxxxxxxxxxx" # username or id 
    token = "XXXXXXXX" 
    page_data = get_page_data(page_id,token) 

    print "Page Name:"+ page_data['name'] 
    print "Likes:"+ str(page_data['likes']) 
    print "Unread notifications:"+ str(page_data['unread_notif_count']) 


    time.sleep(0.5) 

Может ли кто-нибудь помочь мне с этим?

+1

'page_data' - это int, код ошибки, который вы вернули из функции –

+0

ОК. У вас есть решение? –

+0

Вам нужно вернуться и переосмыслить свой код, если page_dara - это не то, что вы ожидаете. – Pureferret

ответ

0

У вас есть несколько точек возврата в вашем коде get_data, возвращая разные типы данных, но, как вы его используете, подразумевается, что вы всегда ожидаете, что это будет dict. В точке Стоун возвращается интервью, когда он ожидает чего-то еще.

Либо замените свой метод get_data, чтобы он всегда возвращал dict или, желательно, менял его, чтобы он возвращался только в одном месте и в один тип данных (ваш dict) и позволял ему генерировать исключение, когда он терпит неудачу.

+1

Воздух попробует. Я ноб, так что это займет некоторое время. Спасибо за ваши усилия и время. –

+0

@edriskeyam дайте мне знать, как это происходит – Pureferret

Смежные вопросы