我正试着从“www.example.com“上弄一个前1000名电影的名单https://mubi.com/lists/the-top-1000。有人能帮我弄一下代码吗?
我试过下面的代码:
import requests
import json
url = "https://api.mubi.com/v3/lists/the-top-1000/list_films?page={page}&per_page={per_page}"
page = 1
per_page = 48
headers = {'Client-Country': 'US'}
films = []
while True:
response = requests.get(url.format(page=page, per_page=per_page), headers=headers)
data = json.loads(response.text)
films.extend(data["items"])
if len(data["items"]) < per_page:
break
page += 1
#print the list of films
for film in films:
print("{:<50} {}".format(film["film"]["title"], film["film"]["canonical_url"]))
我收到以下错误消息:
Traceback (most recent call last):
File "C:\...\mubi.py", line 13, in <module>
films.extend(data["items"])
~~~~^^^^^^^^^
KeyError: 'items'
我得到了以下JSON响应:
{'code': 123, 'message': 'Missing headers', 'user_message': 'CLIENT_COUNTRY La CABECERA HTTP es necesaria', 'fatal': False}
1条答案
按热度按时间pgky5nke1#
如果您确定返回JSON,则可以使用
requests
offers a convenience method.json()
来获取它在使用
.raise_for_status()
之前,您可能还应该使用它作为结果成功与否的第一个检查最后,使用不起眼的
print()
为自己显示数据(如果您发现您在早些时候提出,检查响应细节)可能足以诊断任何问题(例如,您可能收到有效的JSON,但内容可能是一条消息,指示您为他们的服务使用API令牌)