尝试使用urllib3和json获取烂番茄数据时出错(Python)

 手机用户2502902843 发布于 2022-12-29 12:21

作为API的介绍,我试图找出如何使用Rotten Tomatoes API在python中访问数据.这也是我第一次与json打交道.

我正在使用Python 3.4并确认已经安装了json和urllib3.

这是我的代码:

import urllib3
import json

url = 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/box_office.json?limit=16&country=us&apikey=API-KEY';

http = urllib3.PoolManager()
request = http.request('GET', url)
print (json.load(request));
request.release_conn()

这是我得到的错误:

Traceback (most recent call last):
  File "C:\Users\admnasst1\Documents\Personal\Python\RotTomTest.py", line 16, in 
    print (str(json.load(request)));
  File "C:\Python34\lib\json\__init__.py", line 268, in load
    parse_constant=parse_constant, object_pairs_hook=object_pairs_hook, **kw)
  File "C:\Python34\lib\json\__init__.py", line 312, in loads
    s.__class__.__name__))
TypeError: the JSON object must be str, not 'bytes'

由于我正在尝试这么多新东西(API,urllib3,json),我不确定发生了什么.我已经尝试过做上面代码的其他一些版本,并且我一直得到同样的错误,所以我想我必须遗漏一些基本的东西......你们有没有发现它?

1 个回答
  • 您需要将网络数据解码为字符串:

    json.loads(request.data.decode('utf8'))
    

    理想情况下,您将检测Content-Type标头中使用的编解码器; 你要解析它并寻找一个charset=参数.JSON数据的默认编码是UTF-8.

    如果您打算使用第三方库,请requests改用.它包含urllib3一个友好的API ,可以为您处理JSON:

    import requests
    
    url = 'http://api.rottentomatoes.com/api/public/v1.0/lists/movies/box_office.json'
    params = {'limit': 16, 'country': 'us', 'apikey': 'API-KEY'}
    
    response = requests.get(url, params=params)
    print(response.json())
    

    2022-12-29 12:24 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有