我是Python的新手,我尝试使用API抓取时遇到了一些麻烦。我想做的是使用以下代码提取书名列表:
r = requests.get('https://api.dp.la/v2/items?q=magic+AND+wizard&api_key=09a0efa145eaa3c80f6acf7c3b14b588')
data = json.loads(r.text)
for doc in data["docs"]:
for title in doc["sourceResource"]["title"]:
print (title)
哪个可以提取标题,但是大多数(不是全部)标题每行输出为一个字符。我尝试添加.splitlines(),但这不能解决问题。任何建议将不胜感激!
答案 0 :(得分:0)
问题是响应中有两种标题,有些是纯字符串"Germain the wizard"
,有些是字符串['Joe Strong, the boy wizard : or, The mysteries of magic exposed /']
的数组。在这种特殊情况下,似乎所有列表的长度都为1,但我想并非总是如此。为了说明您可能需要做的事情,我在这里添加了一个join
,而不仅仅是使用title[0]
。
import requests
import json
r = requests.get('https://api.dp.la/v2/items?q=magic+AND+wizard&api_key=09a0efa145eaa3c80f6acf7c3b14b588')
data = json.loads(r.text)
for doc in data["docs"]:
title = doc["sourceResource"]["title"]
if isinstance(title, list):
print(" ".join(title))
else:
print(title)
我认为这是永远都不会发生的,API应该返回可预测的类型,否则在用户方面看起来很混乱。