2015-06-19 74 views
0

我正在使用JSON库并尝试将页面订阅源导入到CSV文件。尝试许多方法来获得结果,但每次执行代码时都给予JSON不可串行化。没有Facebook使用我已经使用过的授权码,因此连接字符串将会改变,但是如果您使用具有公共隐私的页面,您仍然可以从下面的代码中获得结果。JSON序列化Python 3.2中的错误

以下是代码

import urllib3 
import json 
import requests 
#from pprint import pprint 
import csv 
from urllib.request import urlopen 

page_id = "abcd" # username or id 
api_endpoint = "https://graph.facebook.com" 
fb_graph_url = api_endpoint+"/"+page_id 
try: 
#api_request = urllib3.Requests(fb_graph_url) 
    #http = urllib3.PoolManager() 
    #api_response = http.request('GET', fb_graph_url) 
    api_response = requests.get(fb_graph_url) 
    try: 
     #print (list.sort(json.loads(api_response.read()))) 
     obj = open('data', 'w') 
     # write(json_dat) 
     f = api_response.content 

     obj.write(json.dumps(f)) 
     obj.close() 
    except Exception as ee: 
     print(ee) 
except Exception as e: 
    print(e) 

试了很多办法,但没有成功。希望有人能帮到

+0

你所得到的网页源不是JSON –

回答

0
requests.get(fb_graph_url).content 

可能是一个字符串。使用json.dumps就行不通了。该函数需要列表或字典作为参数。

如果请求已经返回JSON,只需将其写入文件。

+0

感谢,但没有决心尝试过。 –

1

api_response.content是API的文本内容,而不是Python对象,因此您将无法转储它。

尝试之一:

f = api_response.content 
obj.write(f) 

或者

f = api_response.json() 
obj.write(json.dumps(f)) 
+0

当然会尝试和更新。 –

+0

试过提供的解决方案但是获得的必须是str,而不是字节,'字节'对象没有属性'json'没有解析 –

+0

你能打开一个交互式会话并打印api_response.content的内容吗? –