我想用python计算我的facebook页面,但是我收到以下错误。
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)
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
您的get_data
代码中有多个返回点,返回不同的数据类型,但您使用它的方式,暗示您总是希望它是一个词典。在石头点,当它期待别的东西时,它会返回一个面试。
要么改变你的get_data
方法,所以它总是返回一个dict,或者最好是改变它,所以它只返回一个地方和一个数据类型(你的dict)并让它在失败时抛出异常。