2017-02-04 90 views
0

我想用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代碼中有多個返回點,返回不同的數據類型,但是您使用它的方式暗示着您始終認爲它是一個字典。在Stone的時候,當它期望別的什麼時,它會返回一次採訪。

要麼改變你的get_data方法,以便它總是返回一個字典,或者最好改變它,使它只返回一個地方和一個數據類型(你的字典),並讓它在失敗時拋出異常。

+1

空氣會嘗試它。我是noob,所以它會需要一段時間。感謝您的努力和時間。 –

+0

@edriskeyam讓我知道它是怎麼回事 – Pureferret

相關問題